OpenCV编译和安装
1.OpenCV介绍
OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉处理开源软件库,是由Intel公司俄罗斯团队发起并参与和维护,支持与计算机视觉和机器学习相关的众多算法,以BSD许可证授权发行,可以在商业和研究领域中免费使用。OpenCV可用于开发实时的图像处理、计算机视觉以及模式识别程序,该程序库也可以使用英特尔公司的IPP进行加速处理。
1.1 OpenCV的优势
- 编程语言:OpenCV基于C++实现,同时提供python, Ruby, Matlab等语言的接口。OpenCV-Python是OpenCV的Python API,结合了OpenCV C++API和Python语言的最佳特性。
- 跨平台:OpenCV可以在不同的系统平台上使用,包括Windows,Linux,OS,X,Android和iOS。基于CUDA和OpenCL的高速GPU操作接口也在积极开发中。
- 活跃的开发团队。
- 丰富的API:完善的传统计算机视觉算法,涵盖主流的机器学习算法,同时添加了对深度学习的支持。
1.2 应用领域
- 增强现实
- 人脸识别
- 手势识别
- 人机交互
- 动作识别
- 运动跟踪
- 物体识别
- 图像分割
- 机器人
1.3.模块介绍
- 最基础的核心模块
- core模块:实现最核心的数据结构及其基本运算,如绘图函数、数组操作相关函数等;
- highgui模块:实现视频与图像的读取、显示、存储等接口;
- imgproc模块: 实现图像处理的基础方法,包括图像滤波、图像的几何变换、平滑、阈值分割、形态学处理、边缘检测、目标检测、运动分析和对象跟踪等;
- 图像处理其他更高层次的方向及应用相关的模块
- stitching模块: 实现图像拼接功能;
- features2d模块: 用于提取图像特征及特征匹配;
- nonfree模块: 实现一些专利算法,如sift特征;
- photo模块: 包含图像修复和图像去噪两部分;
- ml模块: 机器学习模块(SVM,决策树,Boosting等);
- G-API模块: 包含超高效的图像处理pipeline引擎 ;
- FLANN模块: 包含快速近似最近邻搜索FLANN和聚类Clustering算法;
- video模块: 针对视频处理,如背景分离,前景检测、对象跟踪等;
- objdetect模块: 实现一些目标检测的功能,经典的基于Haar、LBP特征的人脸检测,基于HOG的行人、汽车等目标检测,分类器使用Cascade Classification(级联分类)和Latent SVM等;
- calib3d模块: 即Calibration(校准)3D,该模块主要是相机校准和三维重建相关的内容。包含基本的多视角几何算法,单个立体摄像头标定,物体姿态估计,立体相似性算法,3D信息的重建等;
2.Windows下安装
OpenCV官网:https://opencv.org/
OpenCV GitHub仓库:https://github.com/opencv/opencv
OpenCV-Contrib GitHub仓库:https://github.com/opencv/opencv_contrib(OpenCV的拓展库,版本一定要和OpenCV对应)
2.1.Qt编译OpenCV
2.1.1.CMake下载安装
官网地址:CMake - Upgrade Your Software Build System
(1)下载后双击安装
(2)进入安装界面,点击【Next】
(3)同意协议,点击【Next】
(4)将Cmake添加进用户变量,黄色框是创建桌面图标,可根据自己需要选择,点击【Next】
(5)选择路径,点击【Next】
(6)开始安装,点击【Install】
(7)安装完毕,点击【Finish】
(8)安装完毕,进行测试。打开cmd黑窗,输入命令查看版本
cmake /V
2.1.2.开始编译
(1)Qt配置CMake
(2)使用Qt打开opencv/sources/CMakeLists.txt
(3)开始配置Qt工程
打开这两个,然后提交:
编译:这个过程可能需要两个小时等待
如编译过程中出现错误:
Building RC object modules/core/CMakeFiles/opencv_core.dir/vs_version.rc.obj gcc: error: long: No such file or directory
解决方法是根据build.make中的错误行,自己修改编译命令,手动生成vs_version.rc.obj,并重新执行mingw32-make命令编译。在终端执行命令:
windres.exe D:\opencv\opencv\build-sources-Desktop_Qt_5_9_0_MinGW_32bit-Default\modules\core\vs_version.rc -O coff D:\opencv\opencv\build-sources-Desktop_Qt_5_9_0_MinGW_32bit-Default\modules\core\CMakeFiles\opencv_core.dir\vs_version.rc.obj
(4)安装
勾选install,再构建
(5)使用
- 库文件:D:\opencv\opencv\build-sources-Desktop_Qt_5_9_0_MinGW_32bit-Default\install\x64\mingw\lib\libopencv_*.a
- 头文件:D:\opencv\opencv\build-sources-Desktop_Qt_5_9_0_MinGW_32bit-Default\install\include
- DLL文件:D:\opencv\opencv\build-sources-Desktop_Qt_5_9_0_MinGW_32bit-Default\bin
Qt工程在使用OpenCV时需要将dll文件拷贝到程序运行目录下,然后需要在pro文件中加入:
INCLUDEPATH += $$PWD/OpencvLib/include
LIBS += $$PWD/OpencvLib/lib/libopencv_*.a
2.2.VS编译OpenCV
OpenCV官网:https://opencv.org/
OpenCV GitHub仓库:https://github.com/opencv/opencv
OpenCV-Contrib GitHub仓库:https://github.com/opencv/opencv_contrib(OpenCV的拓展库,版本一定要和OpenCV对应)
2.2.1.CMake下载安装
参考2.1.1节
2.2.2.开始编译
等待configure完成
再次点击configure,完成后点击generate;然后使用VS打开OpenCV.sln
生成完成后,找到右侧的项目中的CMakeTargets 右击INSTALL然后点击生成
- build\install\x64\vc16\bin:存放的是dll库文件
- build\install\x64\vc16\lib:存放的是lib库文件
- build\install\include:存放所有OpenCV2图像处理头文件
换成Release模式重复上述步骤。
3.Ubuntu下编译
3.1.下载 OpenCV数据包
OpenCV官网:https://opencv.org/
OpenCV GitHub仓库:https://github.com/opencv/opencv
OpenCV-Contrib GitHub仓库:https://github.com/opencv/opencv_contrib(OpenCV的拓展库,版本一定要和OpenCV对应)
3.2.解压安装包
创建一个名为Opencv的文件夹
mkdir opencv
将压缩包解压到opencv文件夹(指定一个文件夹)
unzip opencv-4.10.0.zip -d opencv
3.3.安装cmake和依赖库
进入opencv
cd opencv-4.10.0
安装cmake
sudo apt-get install cmake
3.4.配置依赖库
sudo apt update sudo apt install build-essential libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt install libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev sudo apt install libatlas-base-dev gfortran python3-dev sudo apt install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff5.dev libswscale-dev libjasper-dev sudo apt install libboost-all-dev
执行后出现问题
解决方法:
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main" sudo apt update sudo apt install libjasper1 libjasper-dev
再次输入
sudo apt install libjasper1 libjasper-dev sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff5.dev libswscale-dev libjasper-dev
3.5.开始编译
创建build文件夹
mkdir build
进入build文件夹
cd build
使用cmake编译参数
//不安装opencv_contrib模块
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
//安装opencv_contrib模块
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=~/opencv/opencv-4.10.0/opencv_contrib-4.10.0/modules/ ..
生成编译文件
编译安装
sudo make -16
sudo make install
注意:在编译过程当中出现问题,可尝试删除build目录之后重新构建
3.6.配置环境
gedit /etc/ld.so.conf.d/opencv.conf
#在最后一行中添加:
/usr/local/lib
ldconfig
geidt /etc/bash.bashrc
#在最后一行中添加:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
source /etc/bash.bashrc
updatedb
4.交叉编译
(1)进入解压后的opencv版本目录下去:
cd opencv-3.4.5(这里看自己具体的opencv版本)
(2)cd platforms/linux
(3)vim arm-gnueabi.toolchain.cmake修改成:
set(GCC_COMPILER_VERSION "" CACHE STRING "GCC Compiler version")
set(GNU_MACHINE "/home/txp/shared/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf" CACHE STRING "GNU compiler triple")
include("${CMAKE_CURRENT_LIST_DIR}/arm.toolchain.cmake")
注意这里的交叉编译工具链的路径还是上面的路径:
/home/txp/shared/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf
(4)建立一个build目录,并进入build下去:
(5)编译:
cmake -DCMKAE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=../platforms/linux/arm-gnueabi.toolchain.cmake -DCMAKE_INSTALL_PREFIX=/opt/arm_opencv -DSOFTFP=ON -DENABLE_PROFILING=OFF -DWITH_OPENCL=OFF -DWITH_TBB=ON -DWITH_V4L=ON -DHAVE_CAMV4L2=ON -DBUILD_TESTS=OFF -DINSTALL_PYTHON_EXAMPLES=OFF -DBUILD_EXAMPLES=OFF -DWITH_FFMPEG=ON -DHAVE_FFMPEG=ON -DBUILD_opencv_js=OFF -DENABLE_NEON=OFF -DENABLE_VFPV3=OFF ../
(6)make -j8
(7)make install
原文地址:https://blog.csdn.net/weixin_55238862/article/details/143823491
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!