PHP-OPENCV - PHP extension for Opencv
本插件是:opencv的php扩展
Document
对应的版本关系
OpenCV 3.4.5
Php-opencv 3.3.0
PHP7.0
注意:php7.0的,php-opencv 用 3.3.0,opencv 3.4.5。至少我测试是这样
OpenCV 4.0.0+
Php-opencv 最新版本,不要3.3.0
PHP7.1+
当前本git就是php7.1+使用的php-opencv版本
新增功能说明
为了方便获取视频的时长和宽高,特别增加以下方法。以后增加方法也会注明在这里
$capture = new VideoCapture($videoPath);//创建视频对象
$rate = $capture->getFrameRate(); //帧率.
$fraNum = $capture->getFramesNum(); //视频文件的帧数.
$width = $capture->getWidth(); //视频文件宽度.
$height = $capture->getHeight(); //视频文件的高度.
安装
本安装说明都是依我的安装经验回忆做的记录,有什么错误,请网友指正。
本安装说明分两个部分,一个macos catalina(我的是10.15.3),一个centos7(目前7.2到7.5都是成功的,如果不成功,看提示,后面我会提部分错误解决方法)。
在国内,很多资源纯粹用wget是下载不下来了,我搞了好久(墙)才搞定部分的缺失资源。
mac 的opencv安装
brew install opencv
你也可以,看 哪个命令用得上
brew install opencv4
以上的安装如果能通过,至少你省略了安装ffmpeg等插件过程,毕竟有依赖嘛。如果这个命令提示资源不存在,可以尝试换个源,例如教育网的源。
源的安装就不在这里叙述,需要看的点击这里。
mac 安装php-opencv
你可以下载原作者的源
git clone https://github.com/hihozhou/php-opencv.git
也可以下载我这里的,区别我这里的是增加了获取video信息的方法,见上面的【新增功能说明】。
然后使用以下命令
cd php-opencv
phpize
./configure --with-php-config=/usr/local/Cellar/[email protected]/7.2.19/bin/php-config --enable-debug
make CXXFLAGS='-std=c++11' //这个很重要,Mac很可能不支持c++11
解析下第三句命令
/usr/local/Cellar/[email protected]/7.2.19/bin/php-config
这个请自行替换你本机的php的php-config所在目录。实在不知道在哪里,可以使用以下命令查找下
find / -name php-config
另外如果
make CXXFLAGS='-std=c++11'
命令出现问题,你可以直接使用以下命令
make && make install
如果编译成功,恭喜你,革命成功啦。
找到目录
php-opencv/modules
把编译好的 opencv.so 放入
/usr/local/Cellar/php72-opencv/opencv.so
以上目录也是没有的话,你可以自行创建,php72-opencv 这个目录名称也是我自己命名的,方便记忆而已。
找到目录
/usr/local/etc/php/
如果你的机器有多个版本的php,这里会有7.1,7.2等目录。再进去里面目录。找到conf.d目录。
在这个目录里面创建ext-opencv.ini空白文件
添加以下内容,
[opencv]
extension=/usr/local/Cellar/php72-opencv/opencv.so
/usr/local/Cellar/php72-opencv/opencv.so 记得是刚才你自己创建的目录和复制opencv.so的地址。
重启php,我用的nginx+php-fpm,所以直接使用
killall php-fpm
搞定!!!
centos7 的opencv安装
注意 centos7 需要epel来安装部分的插件,没有的安装的话请安装。
sudo yum -y install epel-release
开始拉取opencv源代码
git clone https://github.com/opencv/opencv_contrib.git
cd opencv_contrib
git checkout 3.4.5 //注意php7.0才需要checkout3.4.5
cd ..
git clone https://github.com/opencv/opencv.git
cd opencv
git checkout 3.4.5 //注意php7.0才需要checkout3.4.5
安装重要插件
很重要,实在是 opencv 太多依赖了,我也不懂..一股脑安装就完事,你能看明白的认为不需要安装的请自行筛选。
sudo yum -y ffmpeg ffmpeg-devel --downloadonly --downloaddir=.
sudo yum -y install git gcc gcc-c++ cmake3 cmake-gui
sudo yum -y install qt5-qtbase-devel
sudo yum install -y python34 python34-devel python34-pip
sudo yum install -y python python-devel python-pip
sudo yum -y install python-devel numpy python34-numpy
sudo yum -y install gtk2-devel
sudo yum -y install vlc
sudo yum install -y libpng-devel
sudo yum install -y jasper-devel
sudo yum install -y openexr-devel
sudo yum install -y libwebp-devel
sudo yum -y install libjpeg-turbo-devel
sudo yum install -y freeglut-devel mesa-libGL mesa-libGL-devel
sudo yum -y install libtiff-devel
sudo yum -y install libdc1394-devel
sudo yum -y install tbb-devel eigen3-devel
sudo yum -y install boost boost-thread boost-devel
sudo yum -y install libv4l-devel
sudo yum -y install gstreamer-plugins-base-devel
sudo yum -y install autoconf automake mercurial pkgconfig zlib-devel libtool freetype-devel make
sudo yum install -y hdf5-devel
sudo yum install -y liblas-devel atlas-devel
sudo yum install -y gcc-gfortran
sudo yum install -y libevent-devel lua-devel openssl-devel flex mysql-devel
sudo yum install -y xz gettext-devel
sudo yum install -y tcl
sudo yum install -y openblas-devel
sudo yum install -y tesseract-devel tesseract-osd
sudo yum install -y java-1.7.0-openjdk-devel
sudo yum install -y pylint
sudo yum install -y python-flake8
sudo yum install -y vtk-devel vtk-python vtk-qt vtk
sudo yum install -y ccache
sudo yum install -y gflags gflags-devel
sudo yum install -y glog glog-devel
sudo yum install -y libpng libpng-devel
sudo yum install -y libXaw-devel freeimage freeimage-devel zziplib-devel cppunit-devel libXt-devel libX11-devel
sudo yum install -y re2c libgnomeui-devel
sudo yum install -y gcc gcc-c++ gtk2-devel gimp-devel gimp-devel-tools gimp-help-browser zlib-devel libtiff-devel libjpeg-devel libpng-devel gstreamer-devel libavc1394-devel libraw1394-devel libdc1394-devel jasper-devel jasper-utils swig python libtool nasm
sudo yum install -y gcc g++ cmake git python-devel numpy gtk2 libdc1394 libv4l gstreamer* nasm libtool swig jasper libdc1394-devel jasper-devel jasper-utils libraw1394-devel libgphoto2 tesseract libavc1394-devel gstreamer-devel libpng-devel libjpeg-devel libtiff-devel zlib-devel gimp gimp-devel gtk+-devel yasm libpciaccess libva-freeworld libva-intel-driver phonon-backend-gstreamer
以下命令你可以不运行,主要是 为了上面的安装 部分显示资源不存在的问题
sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 #提示缺少code时运行
sudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm
不是重要插件的安装,但你的自行判断缺失什么,可以在这里查找补齐。
怎么判断缺失或者必须要安装呢,在编译opencv的过程中,例如显示
check tesseract ... no find
或
check tesseract ... no
即表示这个依赖你本机器没有。
安装 tesseract(可以不安装)
sudo yum -y install tesseract
//或者用编译安装
wget http://www.leptonica.org/source/leptonica-1.77.0.tar.gz
tar xzvf leptonica-1.77.0.tar.gz
cd leptonica-1.77
./configure
make
sudo make install
安装OpenBLAS(可以不安装)
wget http://github.com/xianyi/OpenBLAS/archive/v0.2.20.tar.gz
make FC=gfortran (如果没有安装gfortran,执行sudo apt-get install gfortran)(centos是yum install gcc-gfortran)
make install (将OpenBLAS安装到/opt下)
VTK(opencv内含VTK,看提示是否需要安装)
wget https://www.vtk.org/files/release/8.2/VTK-8.2.0.rc2.tar.gz
tar -xvf VTK-8.2.0.rc2
cd VTK-8.2.0.rc2
mkdir build
cd build
cmake3 ../ -DBUILD_SHARED_LIBS=ON -DBUILD_TESTING=ON -DCMAKE_BUILD_TYPE=Release -DVTK_WRAP_PYTHON=ON
make -j5
make test
ogre
wget https://github.com/OGRECave/ogre/archive/v1.11.5.tar.gz
tar -xvf v1.11.5.tar.gz
mkdir build
cd build
cmake3 ..
make -j2
sudo make install
资源包
rpm -Uvh http://rpmfind.net/linux/fedora/linux/releases/29/Everything/x86_64/os/Packages/o/ogre-devel-1.9.0-24.fc29.i686.rpm
ippicv (这个直接下载到opencv的对应的目录)
编译opencv
这里分两种情况
opencv3.4.5的编译
cd opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_QT=OFF -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_OPENGL=ON -D WITH_FFMPEG=OFF -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules ..
make -j6
sudo make install
注意上面的代码
OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules
这里的目录地址是 你下载的opencv_contrib所在目录
opencv4.0.0+的编译
如果怕下载插件出问题
支持 git clone、wget、curl 下载,示例:
替换opencv的所有的下载地址为
https://g.ioiox.com/https://raw.githubusercontent.com/
mkdir build
cd build
cmake3 -D CMAKE_BUILD_TYPE=RELEASE ..
cmake3 -D CMAKE_INSTALL_PREFIX=/usr/local ..
cmake3 -D INSTALL_C_EXAMPLES=ON ..
cmake3 -D INSTALL_PYTHON_EXAMPLES=ON ..
cmake3 -D WITH_TBB=ON -D WITH_EIGEN=ON ..
cmake3 -D WITH_V4L=ON ..
cmake3 -D OPENCV_SKIP_PYTHON_LOADER=ON ..
cmake3 -D OPENCV_GENERATE_PKGCONFIG=ON ..
cmake3 -D WITH_QT=ON ..
cmake3 -D WITH_OPENGL=ON ..
cmake3 -D PYTHON_DEFAULT_EXECUTABLE=/usr/bin/python3 ..
cmake3 -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules ..
不一定需要cxx11-所以不一定需要下面的参数
cmake3 -D ENABLE_CXX11=ON ..
最后
make && make install
修改环境变量文件,永久生效
vi /etc/profile
export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig #添加在文件末尾并保存退出
source /etc/profile #退出后执行
或者
sh -c 'echo "/usr/local/lib64" > /etc/ld.so.conf.d/opencv.conf'
测试是否编译成功
pkg-config --libs opencv
如果以上代码有输出代码,代表安装成功了。
centos7 安装php-opencv
你可以下载原作者的源
git clone https://github.com/hihozhou/php-opencv.git
也可以下载我这里的,区别我这里的是增加了获取video信息的方法,见上面的【新增功能说明】。
然后使用以下命令
cd php-opencv
phpize
./configure --with-php-config=/usr/bin/php-config --enable-debug
make CXXFLAGS='-std=c++11' //这个很重要,opencv4的话必须要这个
解析下第三句命令
/usr/bin/php-config
这个请自行替换你本机的php的php-config所在目录。实在不知道在哪里,可以使用以下命令查找下
find / -name php-config
另外如果
make CXXFLAGS='-std=c++11'
命令出现问题,你可以直接使用以下命令
make && make install
进入php配置目录,如果你是yum安装的php应该可以找到
cd /etc/php.d
vi opencv.ini
复制以下内容到opencv.ini
; Enable opencv extension module
extension=opencv.so
按esc,:qt保存。
复制
cp 编译目录/modules/opencv.so /usr/lib64/php/modules/opencv.so
执行
service php-fpm restart
php -m
查看opencv模块是否存在,存在的话就安装成功了。