Orange pi3 LTS Ubuntu22.04通过源码编译的方式安装opencv(C++版)

硬件:orangepi 3 LTS

之前安装opencv的时候遇到了很多奇奇怪怪的错误,所以干脆重新写入系统后开始安装。

安装Ubuntu22.04的过程按照官方提供的用户手册来操做

官方用户手册下载链接:http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3-LTS.html

安装必须的依赖

然后开始下载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 
Orange pi3 LTS Ubuntu22.04通过源码编译的方式安装opencv(C++版)_第1张图片

保存然后退出

在终端输入

sudo apt update

到这一步可能会出现这样的报错

Orange pi3 LTS Ubuntu22.04通过源码编译的方式安装opencv(C++版)_第2张图片

这是因为公钥产生的报错,报错后在终端输入

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/

Orange pi3 LTS Ubuntu22.04通过源码编译的方式安装opencv(C++版)_第3张图片

这里我们选择下载源码,可以根据自己的需要下载对应的版本。

可以直接在Ubuntu里面下载,我这把选择的是在windows中下载好后通过Xftp传到Ubuntu中

Orange pi3 LTS Ubuntu22.04通过源码编译的方式安装opencv(C++版)_第4张图片

打开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
Orange pi3 LTS Ubuntu22.04通过源码编译的方式安装opencv(C++版)_第5张图片

添加图片中框出来的内容,保存然后退出。

编译和安装

回到刚刚接收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 ..
Orange pi3 LTS Ubuntu22.04通过源码编译的方式安装opencv(C++版)_第6张图片

输出以上内容即表示Cmake编译成功。

输入以下内容开始编译:

sudo make -j4

这个过程可能要花费一到两个小时

Orange pi3 LTS Ubuntu22.04通过源码编译的方式安装opencv(C++版)_第7张图片

输出以上内容表示编译完成,然后在终端输入以下内容开始下载

sudo make install
Orange pi3 LTS Ubuntu22.04通过源码编译的方式安装opencv(C++版)_第8张图片

输出以上内容表示安装完成。

环境配置

在终端中输入以下命令

sudo nano /etc/ld.so.conf.d/opencv.conf

输入以下内容:/usr/local/lib

Orange pi3 LTS Ubuntu22.04通过源码编译的方式安装opencv(C++版)_第9张图片

保存然后退出。

在终端中输入:

sudo ldconfig 

然后配置环境变量:

在终端中输入:

sudo nano /etc/bash.bashrc

将下面的内容添加到文件末尾

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
Orange pi3 LTS Ubuntu22.04通过源码编译的方式安装opencv(C++版)_第10张图片

保存然后退出。

随后在终端输入以下内容让配置生效。

source ~/.bashrc

到这里opencv源码编译安装就已经全部完成了。

验证

在终端输入以下命令可以检验安装是否正确

pkg-config --modversion opencv4

写一个简单的程序来测试以下:

#include 
#include 

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 
#include 

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

参考文章:

https://blog.csdn.net/qq_38228260/article/details/126531323?ops_request_misc=&request_id=&biz_id=102&utm_term=ubantu22.04%20%E5%AE%89%E8%A3%85opencv&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-126531323.142^v73^control,201^v4^add_ask,239^v2^insert_chatgpt&spm=1018.2226.3001.4187

https://blog.csdn.net/weixin_45861610/article/details/127169289?ops_request_misc=&request_id=&biz_id=102&utm_term=ubantu22.04%20%E5%AE%89%E8%A3%85opencv&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-127169289.142^v73^control,201^v4^add_ask,239^v2^insert_chatgpt&spm=1018.2226.3001.4187

你可能感兴趣的:(opencv,c++,ubuntu)