Ubuntu22.04 下载并使用opencv全流程

前言

因为马上要开始准备考研,所以把opencv配置的流程重新做一遍留档,以防自己忘记

虚拟机的创建就不再赘述了,从一个已经配置完成的虚拟机开始

正文

前置配置

首先是配置各种东西之前的日常

sudo apt update
sudo apt upgrade

然后是各种编译文件的下载

sudo apt install g++
sudo apt install cmake
sudo apt install make

OPENCV下载与安装

opencv的下载

进入opencv官网OpenCV - Open Computer Vision Library

这个代码是在github上的,所以如果搞不定linux的魔法,也可以在win上下载好了传输过去,是没有影响的

解压

进入压缩包所在的文件夹使用unzip命令解压(如果没有,就先下载unzip)

下载部分依赖

sudo apt-get install build-essential libgtk2.0-dev libgtk-3-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev libopenexr-dev libtbb-dev

准备编译

我个人倾向于先在home下创建一个opencv文件夹,再把解压文件夹全部移过去,再在opencv文件夹下创建一个code文件夹用来放代码

在解压的文件夹下创建 build用来存放编译文件

进入build文件夹进行编译

cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES ..

 安装

sudo make install

这就算是完成了基本的下载和安装,随后是如何使用

opencv的使用

下载vscode

一直以来都比较喜欢vscode,所以用vscode,ubuntu下载vscode可以直接在应用商店下,也可以去官网下安装包安装,这方面不展开讲了,教程很多

注意,这里在应用商店直接下可能后面会有奇怪的报错,建议官网下载后安装

查看自己opencv的安装路径

这是我的路径,一般按照上面的方式安装的都在这个位置

同时最好是像我这样创建一个opencv2文件夹的在include下,以免编译器犯病找不到

具体方法是在include文件夹下,使用以下命令行

sudo ln -s opencv4/opencv2 opencv2

完成之后是这样子 

使用VSCODE写OPENCV代码

先在home的opencv文件夹下创建一个code(其实不在这里创建也完全没有关系,但是我习惯这样)

再使用vscode打开此文件夹,code文件夹下创建.vscode文件夹,创建以下三个文件

// c_cpp_properties.json
{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",               
                "/usr/local/include/opencv4", //请确保你的opencv opencv2头文件夹安装在这个目录
                "/usr/local/include/opencv4/opencv2"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "gnu17",
            "cppStandard": "gnu++14",
            "intelliSenseMode": "gcc-x64"
        }
    ],
    "version": 4
}
// launch.json
{
    "version": "0.2.0",
    "configurations": [        
        {
            "name": "g++.exe - 生成和调试活动文件",
            "type": "cppdbg",                                 // 只能是cppdbg
            "request": "launch",                              // launch:启动,attach:附加
            "program": "${fileDirname}/${fileBasenameNoExtension}",   // 需要调试的程序
            "args": [],                                       // 调试时传递给程序的参数
            "stopAtEntry": false,                             // 调试时是否停在程序入口:{true:是,false:否}
            "cwd": "${workspaceFolder}",                      // 工作目录
            "environment": [],                                // 额外的环境变量
            "externalConsole": false,                         // true:输出到外部终端;false:只输出到软件终端(有显示不全的可能)
            "MIMode": "gdb",
            "setupCommands": [      // 暂时不知道作用
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "C/C++: g++ build active file",   // 预编译任务名称,和tasks.json中的label必须相同
            "miDebuggerPath": "/usr/bin/gdb"                   // 调试gdb路径
        }
    ]
}
//tasks.json
{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++ build active file",
            "command": "/usr/bin/g++",
            "args": [
                "-g","-std=c++11", 
                "${file}",                                  // 单个cpp文件
                // "${workspaceFolder}/Demo/*.cpp",         // 多个cpp文件
                // "${workspaceFolder}/src/*.cpp",
                "-o", 
                "${fileDirname}/${fileBasenameNoExtension}",    // 要调试的程序,必须与launch.json文件中的"program"相同
                "-I", "${workspaceFolder}/include",             // 项目include文件
                "-I", "$/usr/local/include",                    // opencv安装的include文件路径
                // "-I", "$/usr/local/include/opencv4",
                // "-I", "$/usr/local/include/opencv4/opencv2",  
                "-L", "$/usr/local/lib",                        //opencv安装的lib文件路径
                "-l", "opencv_core",                            //.so文件,文件原名称“libopencv_core.so”,注意需去除“lib”
                "-l", "opencv_imgproc",
                "-l", "opencv_imgcodecs",
                "-l", "opencv_video",
                "-l", "opencv_ml",
                "-l", "opencv_highgui",
                "-l", "opencv_objdetect",
                "-l", "opencv_flann",
                "-l", "opencv_imgcodecs",
                "-l", "opencv_photo",
                "-l", "opencv_videoio",    
            ],
            "options": {
                "cwd": "${workspaceFolder}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "test",
                "isDefault": true
            },
            "detail": "调试器生成任务"
        }
    ],
    "version": "2.0.0"
}

创个test.cpp测试一下

注意自己改一下图片路径 

#include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
    cout << "hello,world" << endl;
    Mat img1 = imread("/home/hongyu/Pictures/Screenshots/1.png", 1);
    cv::imshow("img", img1);
    while(waitKey(0) != 's');
    return 0;
}

没问题

接下来就可以愉快的写代码了~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值