赞
踩
硬件:orangepi 3 LTS
之前安装opencv的时候遇到了很多奇奇怪怪的错误,所以干脆重新写入系统后开始安装。
安装Ubuntu22.04的过程按照官方提供的用户手册来操做
然后开始下载opencv所需的一下依赖
- sudo apt-get install g++
- sudo apt-get install cmake
- sudo apt-get install unzip
- 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 python3-dev python3-numpy libtbb2 libtbb-dev
按照官方所提供的系统默认的下载源(清华源),上面的这些依赖都是可以直接安装好不会报错的。
接下来去修改下载源
sudo nano /etc/apt/sources.list
在最后面添加
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-security main
保存然后退出
在终端输入
sudo apt update
到这一步可能会出现这样的报错
这是因为公钥产生的报错,报错后在终端输入
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5
然后重新输入
sudo apt update
更新完后我们再下载两个依赖
sudo apt-get install libjasper-dev libdc1394-dev
到这一步必须的依赖就下载完了。
下载链接:https://opencv.org/releases/
这里我们选择下载源码,可以根据自己的需要下载对应的版本。
可以直接在Ubuntu里面下载,我这把选择的是在windows中下载好后通过Xftp传到Ubuntu中
打开Ubuntu终端,进入到刚刚接收opencv-4.5.1.zip的文件夹,再终端中输入
unzip opencv-4.5.1
opencv-4.5.1有一个小bug,用nano打开文件
nano ./opencv-4.5.1/modules/gapi/test/gapi_async_test.cpp
添加图片中框出来的内容,保存然后退出。
回到刚刚接收opencv-4.5.1.zip的文件夹,输入以下命令
- cd opencv-4.5.1
- mkdir build
- cd build
开始Cmake编译
最基本的添加项可以按照这个来:
sudo cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=ON -D CMAKE_INSTALL_PREFIX=/usr/local ..
输出以上内容即表示Cmake编译成功。
输入以下内容开始编译:
sudo make -j4
这个过程可能要花费一到两个小时
输出以上内容表示编译完成,然后在终端输入以下内容开始下载
sudo make install
输出以上内容表示安装完成。
在终端中输入以下命令
sudo nano /etc/ld.so.conf.d/opencv.conf
输入以下内容:/usr/local/lib
保存然后退出。
在终端中输入:
sudo ldconfig
然后配置环境变量:
在终端中输入:
sudo nano /etc/bash.bashrc
将下面的内容添加到文件末尾
- PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
- export PKG_CONFIG_PATH
保存然后退出。
随后在终端输入以下内容让配置生效。
source ~/.bashrc
到这里opencv源码编译安装就已经全部完成了。
在终端输入以下命令可以检验安装是否正确
pkg-config --modversion opencv4
写一个简单的程序来测试以下:
- #include <opencv2/opencv.hpp>
- #include <iostream>
-
- using namespace cv;
- using namespace std;
-
- int main(int argc, char** argv)
- {
- // 加载图像
- Mat image = imread("test.jpg");
-
- // 检查图像是否加载成功
- if(image.empty())
- {
- cout << "无法加载图像文件" << endl;
- return -1;
- }
-
- // 在屏幕上显示图像
- namedWindow("Display window", WINDOW_AUTOSIZE);
- imshow("Display window", image);
-
- // 等待按键按下
- waitKey(0);
-
- return 0;
- }
讲上面的test.cpp和任意一张名为test.jpg的文件放到同一个文件夹中,然后打开终端,进入到该文件夹,在终端中输入以下命令编译
g++ test.cpp -o test `pkg-config opencv4 --cflags --libs`
编译完成生成可执行文件test
在终端中输入./test即可运行,程序效果为显示test.jpg。
这是一个测试摄像头的程序:
- #include <opencv2/opencv.hpp>
- #include <iostream>
-
- using namespace cv;
- using namespace std;
-
- int main()
- {
- VideoCapture cap(0); // 打开默认的摄像头
-
- if (!cap.isOpened()) // 检查摄像头是否成功打开
- {
- cout << "无法打开摄像头" << endl;
- return -1;
- }
-
- namedWindow("Camera", WINDOW_AUTOSIZE); // 创建窗口
-
- while (true)
- {
- Mat frame;
- cap >> frame; // 读取视频帧
-
- imshow("Camera", frame); // 在窗口中显示视频帧
-
- if (waitKey(30) == 'q') // 按下“q”键退出
- {
- break;
- }
- }
-
- return 0;
- }
编译方法和上一个图片测试的程序一样,只需要修改文件名的生成的名字。
运行时提示无法打开摄像头可以试着把程序中“VideoCapture cap(0);"中的0改成1
参考文章:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。