1. 安装依赖文件
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
注意: 此时libjasper-dev安装可能会报错,可以不用管
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev
sudo apt-get install libxvidcore-dev libx264-dev
sudo apt-get install libatlas-base-dev gfortran
sudo apt-get install ffmpeg
2. 解压缩包及编译准备
(1)在home目录新建一个opencv文件夹
sudo mkdir opencv
(2)将opencv-4.5.1.tar.gz,opencv_contirb-4.5.1.tar.gz以及OpenCV_boostdesc_file移动到opencv目录下并且使用tar解压
tar -zxvf opencv-4.5.1.tar.gz
tar -zxvf opencv_contirb-4.5.1.tar.gz
(3)将opencv_contrib-4.5.1文件夹移动到opencv-4.5.1文件夹中
sudo cp -r opencv_contrib-4.5.1 opencv-4.5.1
(4)在opencv-4.5.1文件夹中新建一个build文件夹并且进入
cd opencv-4.5.1 sudo mkdir build cd build
(5)使用命令生成makefile文件
sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=/home/china/opencv/opencv-4.5.1/opencv_contrib-4.5.1/modules/ ..
ps:不要遗忘末尾的..
3.正式开始编译
(1)执行编译命令
sudo make -j4
ps:请给虚拟机分配足够的运行空间
(2)第一次报错的处理:进入OpenCV_boostdesc_file文件夹 把缺少的文件复制到目标路径
cd /home/china/opencv/OpenCV_boostdesc_file sudo cp * ../opencv-4.5.1/opencv_contrib-4.5.1/modules/xfeatures2d/src/
(3)继续编译
cd /home/china/opencv/opencv-4.5.1/build sudo make -j4
(4)第二次报错的处理:进入OpenCV_boostdesc_file文件夹 把缺少的文件复制到目标路径
cd /home/china/opencv/OpenCV_boostdesc_file sudo cp -r opencv-4.5.1/modules/features2d/ opencv-4.5.1/opencv_contrib-4.5.1/modules/xfeatures2d/test/
(5)完成编译 看到显示编译进度100% 并且进行安装
cd /home/china/opencv/opencv-4.5.1/build sudo make -j4 sudo make install
4.环境配置
(1)重新打开一个终端
(2)修改opencv.conf文件
sudo vim /etc/ld.so.conf.d/opencv.conf 在文件中加入 /usr/local/lib 保存退出 sudo ldconfig
(3)修改bashrc文件
sudo vim /etc/bash.bashrc 在文件末尾添加写入: export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkg-config 保存退出 执行更新命令: source /etc/bash.bashrc sudo updatedb
(4)测试输出opencv版本号和可用库
pkg-config --modversion opencv pkg-config --libs opencv
(5)寻找opencv.pc文件
sudo find / -name "opencv.pc" 此时发现找不到
(6)进入到usr/local/lib文件夹下自己创建pkg-config目录,并且在pkg-config目录下创建opencv.pc文件
cd usr/local/lib sudo mkdir pkg-config vim opencv.pc
(7)自己编写opencv.pc文件
prefix=/usr/local exec_prefix=${prefix} libdir=${exec_prefix}/lib includedir=${prefix}/include/opencv4 Name: opencv Description: Open Source Computer Vision Library Version: 4.5.1 Libs: -L${libdir} -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_videoio //这里根据项目需求自行链接库 配置可用库 Cflags: -I${includedir}
(8)保存退出
5.正式测试
(1)编写测试程序test.cpp
#include <opencv2/opencv.hpp> int main() { // 创建 VideoCapture 对象,用于打开摄像头 cv::VideoCapture cap(0); // 检查摄像头是否成功打开 if (!cap.isOpened()) { std::cout << "无法打开摄像头" << std::endl; return -1; } cv::Mat frame; // 循环读取和显示视频帧 while (true) { // 从摄像头中获取一帧图像 cap.read(frame); // 检查是否成功获取到图像 if (frame.empty()) { std::cout << "无法获取摄像头帧" << std::endl; break; } // 在窗口中显示图像 cv::imshow("摄像头", frame); // 按下 ESC 键退出循环 if (cv::waitKey(1) == 27) { break; } } // 释放摄像头并关闭窗口 cap.release(); cv::destroyAllWindows(); return 0; }
(2)编译运行,若摄像头正常打开并且显示成功则opencv已经配置完毕
g++ test.cpp -o test `pkg-config --cflags --libs opencv` sudo ./test
(3)若摄像头没有打开请检查vm摄像头是否连接以及摄像头配置
调用本机摄像头:
-
首先wins+R输入 services.msc 打开本地服务列表,确保 VMware USB Arbitration Service服务开启
-
打开VMware ,依次进入虚拟机设置
-
USB兼容性选择3.1(必需)
-
开机进入linux系统,此时可以进行camera连接,选择与主机连接
-
这样就可以使用了,下次调用时,先进行步骤4连接就可以用了。