Ubuntu配置Opencv

news/2024/11/19 10:46:36/

1、Cmake 的编译及安装

OPENCV的编译依赖Cmake,所以首先需要安装Cmake
通过命令行的方式安装(前提是需要Ubuntu联网)

ml@ml-virtual-machine:~$ sudo apt-get install cmake
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成                 
cmake 已经是最新版 (3.22.1-1ubuntu1.22.04.1)。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 300 个软件包未被升级。

版本信息

ml@ml-virtual-machine:~$  cmake --version
cmake version 3.22.1

2、安装依赖库

2.1 安装 opencv 依赖库

执行命令

ml@ml-virtual-machine:~$ sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libtiff5-dev libswscale-dev pkg-config

【补充】:
显示图像 imshow(),正常显示几秒后报错:
Gtk-Message: 11:37:50.847: Failed to load module “canberra-gtk-module”
缺少库,执行以下命令安装:

ml@ml-virtual-machine:~$ sudo apt-get install libcanberra-gtk-module

2.2 安装 opencv_contrib 依赖库

执行命令

ml@ml-virtual-machine:~$sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev git

安装时若是没有产生报错,其他提示均可忽略

3 、Opencv 的编译及安装

3.1、下载 opencv并解压到 opencv-4.2.0目录

下载官网:https://github.com/opencv/opencv

3.2、进入opencv-4.2.0目录,进行如下操作

ml@ml-virtual-machine:~/opencv-4.2.0$ mkdir build && cd build

进入已经创建的文件目录build

3.3、配置编译选项

ml@ml-virtual-machine:~/opencv-4.2.0/build$ cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES -D CMAKE_INSTALL_PREFIX=/usr/local/opencv4 ../

成功会产生如下信息
– Build files have been written to: /home/ml/opencv-4.2.0/build

3.4、编译

ml@ml-virtual-machine:~/opencv-4.2.0/build$ make

时间较长,需要耐心等待,直到进度条达到 100%

3.5、 安装

ml@ml-virtual-machine:~/opencv-4.2.0/build$ sudo make install

执行下列命令

ml@ml-virtual-machine:~/opencv-4.2.0/build$ ls /usr/local/opencv4/

结果为 in include lib share

3.6、 测试

直接输入下面命令进入到 opencv-4.2.0/samples/cpp/example_cmake目录

ml@ml-virtual-machine:~/opencv-4.2.0/build$ cd ..
ml@ml-virtual-machine:~/opencv-4.2.0$ cd samples/
ml@ml-virtual-machine:~/opencv-4.2.0/samples$ cd cpp/
ml@ml-virtual-machine:~/opencv-4.2.0/samples/cpp$ cd example_cmake/
ml@ml-virtual-machine:~/opencv-4.2.0/samples/cpp/example_cmake$ 
ml@ml-virtual-machine:~/opencv-4.2.0/samples/cpp/example_cmake$ cmake ./
ml@ml-virtual-machine:~/opencv-4.2.0/samples/cpp/example_cmake$ make
[ 50%] Building CXX object CMakeFiles/opencv_example.dir/example.cpp.o
[100%] Linking CXX executable opencv_example
[100%] Built target opencv_example

3.7、 运行示例

在刚刚的目录下:(源码目录 samples/cpp/example_cmake)

ml@ml-virtual-machine:~/opencv-4.2.0/samples/cpp/example_cmake$  ./opencv_example
Built with OpenCV 4.7.0-dev
[ WARN:0@0.002] global cap_v4l.cpp:982 open VIDEOIO(V4L2:/dev/video0): can't open camera by index
[ERROR:0@0.002] global obsensor_uvc_stream_channel.cpp:156 getStreamChannelGroup Camera index out of range
No capture
^C

即使没有摄像头打开,但是有如下界面,则 OPENCV 安装成功!
在这里插入图片描述

4、OPENCV_CONTRIB 的编译安装

4.1 下载 opencv

同上,在在bulid下直接进行下面操作
官网下载对应版本:opencv_contrib-4.2.0.zip
下载:https://github.com/opencv/opencv_contrib

4.2、解压移动

解压 contrib,并移动到 opencv 目录下(或者不用使用命令直接解压提取到opencv-4.2.0下)

ml@ml-virtual-machine:~/下载$ unzip opencv_contrib-4.2.0.zip
ml@ml-virtual-machine:~/下载$ mv opencv_contrib-4.2.0 ~/opencv-4.2.0

4.3、配置编译项

先将之前编译 opencv 的 build 目录清空,再配置

ml@ml-virtual-machine:~/下载$ cd ~/opencv-4.2.0
ml@ml-virtual-machine:~/opencv-4.2.0$ cd build
ml@ml-virtual-machine:~/opencv-4.2.0/build$ rm * -rf

^[-- Configuring done
– Generating done
– Build files have been written to: /home/ml/opencv-4.2.0/build
编译成功

4.4、编译

在bulid下直接进行编译

ml@ml-virtual-machine:~/opencv-4.2.0/build$ make

4.5 安装

ml@ml-virtual-machine:~/opencv-4.2.0/build$ sudo make install

http://www.ppmy.cn/news/39822.html

相关文章

【计算机网络-网络层】路由选择协议

文章目录1 路由器与路由选择1.1 路由器1.2 路由表(RIB 表)1.2.1 路由表项1.2.2 动态路由1.2.3 静态路由1.2.4 直连路由1.3 转发表(FIB 表)1.4 自治系统 AS2 内部网关协议 IGP——路由信息协议 RIP2.1 RIP 规定2.2 RIP 的工作原理2…

归并排序及常见面试题

⭐️前言⭐️ 本篇文章主要介绍归并排序,以及与之相关的改写问题,将该类问题总结归纳,便于后续遇见类似题目时候的解答。 🍉欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟😁 🍉博主将持…

3.10——常类型

常类型的引入,就是为了既保证数据共享又防止数据被改动。常类型是指使用类型修饰符const说明的类型,常类型的变量或对象成员的值在程序运行期间是不可改动的。 常引用 如果在说明引用时用const修饰,则被说明的引用为常引用。如果用常引用作为…

【一起啃书】《机器学习》第三章 线性模型

第三章 线性模型 3.1 基本形式 给定由ddd个属性描述的示例x(x1;x2;...;xd){\bf{x}} ({x_1};{x_2};...;{x_d})x(x1​;x2​;...;xd​),其中xix_ixi​是x\bf{x}x在第iii个属性上的取值,线性模型试图学得一个通过属性的线性组合来进行预测的函数&#xff0c…

renderdoc 命令行说明

写在前面 1. 本文说明renderdoccmd、qrenderdoc 这2个命令的常见用法~ 2. renderdoc相关名词 renderdoccmd what,能干嘛 capture选项: launch 一个应用, 用的RENDERDOC_ExecuteAndInject(), 不支持android10及以上的hook&…

「UG/NX」Block UI 集列表SetList

目录 控件说明界面效果公有属性对话框标题 DialogLabel(仅创建)控件灰显 Enable分组 Group(仅创建)控件显隐 Show控件标题 Label国籍文本 AllowInternationalTextInput(仅创建)显示密文 IsPassword(仅创建)本地化 Localize(仅创建)保存值 RetainValue属性界面代码实现…

数据仓库、数据集市、数据湖,你的企业更适合哪种数据管理架构?

建设企业级数据平台,首先需要了解企业数据,确认管理需求,并选择一个数据管理架构。那么面对纷繁复杂的数据来源,多元化的数据结构,以及他们的管理使用需求,企业数据平台建设该从何处入手呢?哪个…

SQL 学习 day1

day1 SQL 学习 1. 数据库概述 database: .数据持久化 - 将数据保存到能够⻓久保存数据的存储介质中,在掉电的情况下数据也不会丢失 excel 在数据体量方面有限,且解决问题的方法较为麻烦 数据库优点:不关注底层的存储细节、高效的数据访问…