自学内容网 自学内容网

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.模块介绍

  • 最基础的核心模块
  1. core模块:实现最核心的数据结构及其基本运算,如绘图函数、数组操作相关函数等;
  2. highgui模块:实现视频与图像的读取、显示、存储等接口;
  3. imgproc模块: 实现图像处理的基础方法,包括图像滤波、图像的几何变换、平滑、阈值分割、形态学处理、边缘检测、目标检测、运动分析和对象跟踪等;
  • 图像处理其他更高层次的方向及应用相关的模块
  1. stitching模块: 实现图像拼接功能;
  2. features2d模块: 用于提取图像特征及特征匹配;
  3. nonfree模块: 实现一些专利算法,如sift特征;
  4. photo模块: 包含图像修复和图像去噪两部分;
  5. ml模块: 机器学习模块(SVM,决策树,Boosting等);
  6. G-API模块: 包含超高效的图像处理pipeline引擎 ;
  7. FLANN模块: 包含快速近似最近邻搜索FLANN和聚类Clustering算法;
  8. video模块: 针对视频处理,如背景分离,前景检测、对象跟踪等;
  9. objdetect模块: 实现一些目标检测的功能,经典的基于Haar、LBP特征的人脸检测,基于HOG的行人、汽车等目标检测,分类器使用Cascade Classification(级联分类)和Latent SVM等;
  10. 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)!