当前位置 : 主页 > 网络编程 > PHP >

OpenCV-最受欢迎的计算机视觉和机器学习库

来源:互联网 收集:自由互联 发布时间:2023-11-09
一、介绍 opencv是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和


一、介绍

opencv是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。 它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

opencv是一个非常好用的图像处理和分析库,它包括了平面特征提取,3D校准,对象侦查,图像处理,影像分析等功能,几乎可以满足在机器学习中所需要的,对图像的一切功能。

今天我们将介绍如何在Linux环境下安装opencv,并将其与php项目结合到一起使用。

二、安装准备

我们此次采用编译安装的模式进行部署,不同的php版本需要配合不同版本的opencv使用,这些模块的编译都需要cmake支持,所以我们需要提前了解一下各个模块的版本组合,避免多走弯路。

各模块版本映射表如下:

php

php-opencv

opencv

cmake

c++

5.6/5.7/5.8

暂无

2.0+

2.0.0+

>=8

7.0/7.1

7.2

3.0+

3.0.0+

>=10

7.2

7.2/7.3

4.0+

3.5.1+

>=11

7.3

7.3

4.2+

3.10.0+

>=11

7.4/8.0/8.1/8.2

8.1+

4.5.5+

3.20.0+

>=11

标红那一行是我们今天使用的版本组合。详细版本如下:

  • php7.2.34
  • php-opencv-php7.2
  • opencv4.0.1
  • cmake3.15.0
  • c++11

三、安装cmake

3.1:下载安装包并解压

wget https://gitlab.kitware.com/cmake/cmake/-/archive/v3.15.0/cmake-v3.15.0.zip
unzip cmake-v3.15.0.zip
cd cmake-v3.15.0

OpenCV-最受欢迎的计算机视觉和机器学习库_opencv

3.2:编译安装

./bootstrap --system-curl  //参数很重要,否则会报错
make
make install

OpenCV-最受欢迎的计算机视觉和机器学习库_php_02

3.3:添加命令,测试

cmake默认安装目录在/usr/local下

ln -s /usr/local/bin/cmake /usr/bin/cmake

OpenCV-最受欢迎的计算机视觉和机器学习库_c++11_03

OpenCV-最受欢迎的计算机视觉和机器学习库_图像处理_04

四、安装opencv

4.1:下载安装包并解压

wget https://codeload.github.com/opencv/opencv/zip/refs/tags/4.0.1 > opencv-4.0.1.zip
unzip opencv-4.0.1.zip
cd opencv-4.0.1

OpenCV-最受欢迎的计算机视觉和机器学习库_php_05

4.2:安装依赖

yum install gcc gcc-c++ gtk2-devel pkgconfig 
            python python-devel python-numpy 
            libdc1394-devel libv4l-devel gstreamer-plugins-base-devel 
            libpng-devel libjpeg-turbo-devel jasper-devel openexr-devel 
            libtiff-devel libwebp-devel tbb-devel eigen3-devel

OpenCV-最受欢迎的计算机视觉和机器学习库_opencv_06

4.3:编译安装

mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
make -j4
sudo make install

OpenCV-最受欢迎的计算机视觉和机器学习库_c++11_07

4.4:测试

/usr/local/bin/opencv_version

OpenCV-最受欢迎的计算机视觉和机器学习库_图像处理_08

版本号输出成功

4.5:配置pk-config

在下一步中我们编译php扩展默认需要依赖pk-config,为了避免麻烦,这里我们直接做一下配置。

touch /usr/lib64/pkgconfig/opencv4.pc  //在依赖目录下创建pc文件

vim /usr/lib64/pkgconfig/opencv4.pc    //编辑创建的pc文件
...
prefix=/usr/local            //opencv4安装目录
exec_prefix=${prefix}
includedir=${prefix}/include
libdir=${exec_prefix}/lib

Name: opencv
Description: The opencv library
Version:4.0.1
Cflags: -I${includedir}/opencv4
Libs: -L${libdir} -lopencv_stitching -lopencv_objdetect -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_video -lopencv_photo -lopencv_ml -lopencv_imgproc -lopencv_flann  -lopencv_core   //注意这里,不能乱加不存在的依赖,在后续使用的时候,编译器会校验依赖,如果发现不存在的依赖,会报错

OpenCV-最受欢迎的计算机视觉和机器学习库_图像处理_09

默认情况下 pkg-config 的查找路径为 /usr/lib/pkgconfig 和 /usr/share/pkgconfig,也可以通过环境变量 PKG_CONFIG_PATH 在额外指定 pkg-config 的查找路径

配置成功后我们可以测试一下:

OpenCV-最受欢迎的计算机视觉和机器学习库_opencv_10

五、安装php-opencv扩展

5.1:下载扩展源码

git clone -b php7.2 https://github.com/php-opencv/php-opencv.git
cd php-opencv

OpenCV-最受欢迎的计算机视觉和机器学习库_php_11

5.2:编译扩展

phpize
./configure --with-php-config=/usr/bin/php-config --enable-debug
make CXXFLAGS='-std=c++11'   //这里很重要,千万不要搞错,opencv4版本的话必须要c++11版本以上编译,这也是为啥前面步骤中要求安装c++11的原因
make install

OpenCV-最受欢迎的计算机视觉和机器学习库_图像处理_12

5.3:配置php扩展

vim php.ini
...
extension=opencv.so

OpenCV-最受欢迎的计算机视觉和机器学习库_opencv_13

OpenCV-最受欢迎的计算机视觉和机器学习库_图像处理_14

六、php项目测试

测试代码:

<?php
use CV\{Mat,Scalar, Point, Size};
use function CV\{ellipse, imwrite, waitKey};
use const CV\{CV_8UC3};

$windowWidth = 600;
$thickness = 2;
$lineType = 8;
$matScalar = new Scalar(0,0,0);
$mat = new Mat($windowWidth, $windowWidth, CV_8UC3, $matScalar);
$point=new Point($windowWidth/2, $windowWidth/2);
$size=new Size($windowWidth/4, $windowWidth/16);
$scalar=new Scalar(255, 129, 0);
for($i = 0; $i <= 360; $i += 45){
   ellipse($mat,$point,$size,$i,0,360,$scalar,$thickness,$lineType);
}
imwrite('/tmp/ellipse.png',$mat);
?>

运行代码我们会得到一个漂亮的图像:

OpenCV-最受欢迎的计算机视觉和机器学习库_c++11_15

opencv有很多实用的函数,这里不再一一举例,想要发掘opencv更多功能的同学可以看我后面的文章,我将继续带大家发掘更多opencv用法

七、遇到的问题

问题1:cmake编译失败,在执行make阶段,如下图:

OpenCV-最受欢迎的计算机视觉和机器学习库_c++11_16

解决方案:这个原因其实是依赖错误导致的,libcmcurl链接库版本不对,解决办法就是指定curl依赖,可以在编译配置阶段加上如下配置:

./bootstrap

改为

./bootstrap --system-curl

问题2:配置完php扩展后,测试的时候,发现opencv动态链接库找不到,报错如下:

OpenCV-最受欢迎的计算机视觉和机器学习库_c++11_17

解决方案:这个问题的原因是动态库依赖目录设置不正确,默认的LD_LIBRARY_PATH指向没有包含我们安装的opencv库,所以我们需要做以下处理:

export LD_LIBRARY_PATH="/usr/local/lib"  //把opencv安装目录加到依赖查找

OpenCV-最受欢迎的计算机视觉和机器学习库_c++11_18



上一篇:Swoft-cli使用
下一篇:没有了
网友评论