目录
前言
本博客是基于Ubuntu18.04下的对于opencv和扩展项的配置
一、opencv安装
上述两个链接都可以
这里下载opencv 4.5.4版本,选择source下载源代码
cd opencv-4.5.4 //进入解压完毕的目录
mkdir build //创建build目录
cd build //生成cmake
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local ..
make -j4 //4核编译
sudo make install //安装
sudo gedit /etc/bash.bashrc //添加环境变量
//在最后加入以下代码
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
完成后进行动态库链接即可
sudo ldconfig
二、下载opencv_contirb扩展并编译
1.cmake更新
系统通过命令行进行下载安装的cmake版本低可能造成后续编译错误
所以首先选择进行cmake的更新
一、下载Binary版(下载即用)
下载好后将文件解压出来,我放到了下载项里。
采用软链接的方式进行添加到环境变量中
su
//切换到root用户下后
ln -sf /home/zed/下载/cmake-3.24.3-linux-x86_64/bin/* /usr/local/bin/
这里注意自行更改软链接的路径和cmake版本号
查看是否添加完成
cmake -version
cmake-gui -version
ccmake -version
cpack -version
ctest -version
显示对应的版本说明已经成功添加
2.opencv_copntrib安装
https://github.com/opencv/opencv_contrib/tags
选择对应版本的下载即可
然后安装相应的opencv依赖项文件
sudo apt-get install build-essential
sudo apt-get install git libgtk-3-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python3-dev python3-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
最后一个会出现无法定位到安装包的问题
提示:errorE: unable to locate libjasper-dev
解决方法如下
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev
然后继续进行接下来的操作,将OpenCV-contrib文件解压后放入opencv解压后的文件夹,并修改contrib文件夹名字为opencv_contrib
进入工作目录下进行编译
cd opencv-4.5.4/
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules ..
*》也可以将OPENCV_EXTRA_MODULES_PATH=…/opencv_contrib/modules …修改为自己的路径。
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=/home/zed/opencv454/opencv-4.5.4/opencv_contrib-4.5.4/modules ..
*》如果不需要contrib模块,则输入:
cmake -D CMAKE_INSTALL_PREFIX=/usr/local -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=ON -D ENABLE_CXX11=1 -D OPENCV_ENABLE_NONFREE=True ..
(推荐)如果需要GPU加速和contrib模块,则输入:
cmake -D CMAKE_INSTALL_PREFIX=/usr/local -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=ON -D ENABLE_CXX11=1 -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules -D OPENCV_ENABLE_NONFREE=True -D INSTALL_PYTHON_EXAMPLES=ON -D INSTALL_C_EXAMPLES=ON -D WITH_CUDA=ON -D WITH_TBB=ON -D ENABLE_FAST_MATH=1 -D WITH_OPENMP=ON -D WITH_CUFFT=ON -D WITH_CUBLAS=ON -D CUDA_FAST_MATH=1 -D CUDA_NVCC_FLAGS="-D_FORCE_INLINES" ..
然后进行最后的编译即可
make -j$(nproc)
等待编译完成之后就可以安装了
sudo make install
3.环境配置
另起一个终端
sudo gedit /etc/ld.so.conf.d/OpenCV.conf
//打开之后在空白文档中输入
/usr/local/lib
然后重新进行动态库的链接
sudo ldconfig
如果出现问题:
/sbin/ldconfig.real: /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8 不是符号链接
则需要进行
sudo ldconfig -v
在终端的输出中找到与报错信息对应的提示,然后输入自己对应的即可
如此反复直到最后能正常进行动态库的编译为止
修改bash文件
sudo gedit /etc/bash.bashrc
//在最后一行加入
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
然后另起终端
source /etc/bash.bashrc
sudo updatedb
终端正常提示后说明配置已经基本完成
测试
cd /opencv4.5.4/samples/cpp/example_cmake
cmake .
make
./opencv_example
然后发现正常调用了摄像头并显示画面说明已经配置完成。
如果这里并没有调用摄像头,而是显示了一个
Hello opencv
的黑窗口,说明摄像头没有链接到虚拟机中
解决方法
打开可移动设备,然后勾选连接(断开与主机的连接)即可
如果发现摄像头已经正常连接但是不显示窗口
则说明usb兼容性需要更改
在这里做一下调整即可