linux下qt+opencv、arm端移植opencv
由于做研究的缘故,需要在Linux下移植opencv配合qt使用,以及arm端移植opencv。由于自己在操作过程中遇到很多问题,并一一解决,为了让其他需要的人少走弯路,现将自己的配置过程记录如下:
一、Linux下移植opencv配合qt使用
1.首先更新安装opencv编译所需的库
⑴安装build-essential、libgtk2.0-dev、libavcodec-dev、libavformat-dev、libjpeg.dev、libtiff4.dev、 libswscale-dev 、libjasper-dev 、pkg-config包。
命令:sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev pkg-config
⑵安装cmake、cmake-qt-gui
命令:sudo apt-get install cmake cmake-qt-gui
2.下载opencv包
opencv包的各种版本官网上都有,下载网址为:https://opencv.org/releases.html
打开网址弹出如下界面:
我安装的是2.4.9的,点击箭头所指示的,弹出如下界面:
这里有两种文件格式zip与tar.gz,下载任何一种都可以(我下载的是opencv-2.4.9.tar.gz)。
3.安装opencv
⑴解压opencv-2.4.9.tar.gz
解压命令:tar -zxvf opencv-2.4.9.tar.gz
⑵解压完成后,进入opencv-2.4.9目录下,执行cmake-gui命令,弹出如下界面:
注意:"Where is the source code"中填入电脑中opencv源码(即opencv解压后的开源包opencv-2.4.9)的位置,"Where to build the binaries"中填入生成make编译文件的位置(这里我选的是opencv-x64),然后点击Configure。弹出如下界面:
选择Unix Makefiles和Use default native compilers;点击Finsh,配置完成。(注意:点击Finsh后,如果产生某些错误,可以参考文章:http://blog.csdn.net/wuweifeng_2017/article/details/78376276)
点击Generate,Generate(生成)完成。
⑶编译make
Generate完成后,进入opencv-x64目录下执行命令:make
开始进行编译......
编译成功。
⑷安装make install
编译成功后,执行命令:make install,开始进行安装......
安装成功后,在/usr/local/lib下就会出现编译好的lib文件。
4.系统变量配置
⑴添加库路径
执行命令:sudo vim /etc/ld.so.conf.d/opencv.conf
在其中添加:/usr/local/lib
保存.
⑵更新系统库
执行命令:sudo ldconfig
⑶设置环境变量
执行命令:sudo vim /etc/bash.bashrc
在其中添加PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
保存成功后,则opencv安装完成。
5.运行测试
将步骤3中解压的/OpenCV-2.4.9/samples中的c文件夹拷贝出来,下面运行一下这里面的一个例程,初步体验下OpenCV。拷贝完成后进入这个文件夹:
执行命令:chmod +x build_all.sh
./build_all.sh
这样就对例程目录下的源文件进行了编译,这里运行一个人脸检测的程序。接下来运行如下命令:
./facedetect --cascade="/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml" --scale=1.5 lena.jpg
(注意:lena.jpg要把c文件放在同一个目录下)
运行结果如下:
则说明opencv配置成功。
二、arm端移植opencv
1.新建opencv-arm目录,进入opencv-2.4.9目录下,执行cmake-gui命令,弹出如下界面:
注意:"Where
is the source code"中填入电脑中opencv源码(即opencv解压后的开源包opencv-2.4.9)的位置,"Where
to build the binaries"中填入生成make编译文件的位置(这里我选的是opencv-arm),然后点击Configure。弹出如下界面:
选择Unix Makefiles和Specify options for cross-compiling;点击Next,弹出如下界面:
其中,Operating System填入OS名,即编译器名arm-linux;Version填内核版本,即2.4.9;Compilers中C处填入编译器arm-linux-gcc的路径;C++处填入编译器arm-linux-g++的路径;Target Root是寻找lib和include文件的,这些文件都在arm-Linux编译器文件路径下,即目录4.4.1中。设置完成后,点击Finish,开始进行配置(Configure),弹出如下界面:
说明配置过程中有错误,点击OK,修改如下配置参数。
2.去掉WITH_TIFF、WITH_CUDA、WITH_OPENGL后面的√;修改CMAKE_INSTALL_PREFIX为要生成文件的路径,而且千万不要跟pc的库重叠,避免将原来的库覆盖;修改CMAKE_BUILD_TYPE为Release;修改CMAKE_FIND_ROOT_PATH为Linux安装库的路径。即如下图:
重新Configure下,即可配置成功。
配置成功后,点击Generate。弹出如下界面:
即Configure、Generate成功。
3.进入opencv-arm目录,执行命令:sudo vim CMakeCache.txt,找到CMAKE_EXE_LINKER_FLAGS:STRING=' ',在该行添加-lpthread -lrt -ldl三个参数。如下图:
添加完成后保存。
4.编译make
执行命令:make 开始进行编译......
编译成功。
5.安装make install
编译成功后,执行命令:make install,开始进行安装......
安装成功。
参考文章:
http://blog.csdn.net/yuechuxuan/article/details/78229942
http://www.cnblogs.com/emouse/archive/2013/02/22/2922940.html
http://blog.csdn.net/jd404647184/article/details/45745535
http://blog.csdn.net/jakeo0o/article/details/54584199