Ubuntu18.04下使用CMake-gui安装OpenCV4.5.0和OpenCV_contrib-4.5.0,以及遇到的报错。

Ubuntu18.04下使用CMake-gui安装OpenCV4.5.0和OpenCV_contrib-4.5.0,以及遇到的报错。

1.引言

写这篇博客主要是为了记录自己在Ubuntu下安装Opencv的过程,为了防止忘记安装步骤,不能偷懒啊。
安装过程主要是参考了几位大佬的博客,在此向几位博主表示感谢,有人引路真好,参考的博客文章如下:

wuyu1125
Hzhihua
lalulaBar
纪小达
https://www.jianshu.com/p/e218b2f7dabe

2.下载

首先在github下载OpenCV4.5.0和OpenCV_contrib4.5.0,也可以下载自己需要的版本,但OpenCV和OpenCV_contrib的版本要保持一致。
OpenCV下载网址:https://github.com/opencv/opencv/tags
OpenCV_contrib下载网址:https://github.com/opencv/opencv_contrib/tags

3.安装

3.1.添加依赖包
# 因为安装 libjasper-dev 这个依赖包可能会出问题,所以先执行以下命令,在执行后续依赖包的安装

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev

# 而且一路配置过来犯过一些错(具体错误 ——> 问题 4),说 libgtk 依赖要先于 opencv 某些依赖安装(——> 参考 9),保险起见
sudo apt-get install libgtk-3-dev libgtk2.0-dev pkg-config

# 接下来就可以执行后续命令
# 可以输入下面的一次装,省心省力

# 分步装
sudo apt-get install build-essential

# opencv4.1.0需要 libgtk-3-dev 
sudo apt-get install cmake libgtk-3-dev libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python3-dev python3-numpy python-dev python-numpy libpython3.6-dev libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff5-dev libjasper-dev libdc1394-22-dev # 处理图像所需的包
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev
sudo apt-get install libopenexr-dev
sudo apt-get install libxvidcore-dev libx264-dev # 处理视频所需的包
sudo apt-get install libatlas-base-dev gfortran # 优化opencv功能
sudo apt-get install ffmpeg

# 一次装 (就是把上面的依赖全部写成一行,省心,下载过程中有些依赖需要你确认,-y 是替你输入 y ,省力)
sudo apt-get -y install build-essential cmake libgtk-3-dev libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev python3-dev python3-numpy python-dev python-numpy libpython3.6-dev libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff5-dev libjasper-dev libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev libopenexr-dev libxvidcore-dev libx264-dev libatlas-base-dev gfortran ffmpeg
3.2.配置OpenCV

1.将下载好的OpenCV4.5.0和OpenCV_contrib4.5.0解压,然后在OpenCV4.5.0文件夹中新建build文件夹

在这里插入图片描述
2.然后在build目录下打开终端,或者新建终端依次输入以下代码:

mkdir build
cd build 
cmake-gui .. 

3.运行后会弹出CMake的图形化界面,在上方的两个路径里面,选择好代码所在文件夹的路径和要安装的路径
在这里插入图片描述
4.点击左下方的Configure按钮,选择Unix Makefiles,选择Use default native compilers(默认),然后点击Finish。需要下载一些文件,要等待一段时间。然后CMake即载入默认配置,窗口的中间部分即配置列表,这里和使用cmake命令直接生成makefile文件一致的。

在这里插入图片描述
5.进行下一步的配置
(1)在 CMAKE_BUILD_TYPE 值处选择 Release
(2)CMAKE_INSTALL_PREFIX 选择安装的路径
这里我选择默认的路径,你也可以在/opencv-4.5.0/build目录下自己新建一个文件夹进行安装。
在这里插入图片描述
6.在 OPENCV_EXTRA_MODULES_PATH 处,为其设置 opencv_contrib-4.5.0 的路径,精确到 /modules 目录,并勾选 OPENCV_PYTHON3_VERSION

在这里插入图片描述
7.勾选 OPENCV_GENERATE_PKGCONFIG

这个很重要,是生成 opencv.pc 的,如果没有勾选就只能自己新建,后面也会提到。血的教训,而且网上很多教程都没提到,我是从官方文档看到的。

在这里插入图片描述

8.接着在build目录下打开终端,输入

make

sudo make install

9.然后就开始安装了,这一步安装比较慢,可能会遇到报错。
编译过程中出现如下错误:

①fatal error: features2d/test/test_detectors_regression.impl.hpp: No such file or directory

在这里插入图片描述

原因是没找到这个文件,解决方法如下:

step.1 进入opencv源码目录~/opencv4.5.0/modules/features2d/test/,拷贝test_detectors_regression.impl.hpp 及 test_descriptors_regression.impl.hpp 到 ~/opencv_contrib4.5.0/modules/xfeatures2d/test/下
step.2 编辑 test_features2d.cpp ,修改include文件地址
// #include "features2d/test/test_detectors_regression.impl.hpp"
// #include "features2d/test/test_descriptors_regression.impl.hpp"
// 修改文件地址如下
#include "test_detectors_regression.impl.hpp"
#include "test_descriptors_regression.impl.hpp"

根据提示的缺少文件从/opencv4.5.0/modules/features2d/test中拷贝如下文件到~/opencv_contrib4.5.0/modules/xfeatures2d/test/

test_detectors_invariance.impl.hpp
test_descriptors_invariance.impl.hpp
test_invariance_utils.hpp

然后修改test_rotation_and_scale_invariance.cpp文件

// #include "features2d/test/test_detectors_invariance.impl.hpp" // main OpenCV repo
// #include "features2d/test/test_descriptors_invariance.impl.hpp" // main OpenCV repo
#include "test_detectors_invariance.impl.hpp" // main OpenCV repo
#include "test_descriptors_invariance.impl.hpp" // main OpenCV repo

最后在build目录下编译:sudo make install,问题解决。

②出现fatal error: boostdesc_bgm.i: No such file or directory。

安装OpenCV时提示缺少boostdesc_bgm.i文件的问题

在这里插入图片描述
原因是下载的时候没有fq所以下图的文件没下载下来,解决方法如下:

在这里插入图片描述
将缺少的文件拷贝到opencv_contrib4.5.0/modules/xfeatures2d/src/目录下
下载地址:https://pan.baidu.com/s/1ihQggYXevvgw7kcMKT8Uvg
提取码:9491

4.配置环境变量

1、配置opencv.pc

先解释一下 pkg-config 这个什么意思,有助于大家理解待会为什么这么去配置环境。

pkg-config 就是我们告诉程序编译时从哪里找头文件和库相关信息。

那 pkg-config 从哪儿知道这些信息的呢?

它是从包名为 xxx.pc 这个文件中查找到的。就比如上面两个测试,它是从 opencv.pc 里去找,但是问题是我编译完之后整台电脑都没有 opencv.pc 这个文件啊(不信你试试 sudo find / -name opencv.pc)

那怎么办呢?没有枪没有炮我们自己造!

当然,这个造大炮的前提是在第3节第7步骤中没有勾选 OPENCV_GENERATE_PKGCONFIG。如果勾选了就跳过本 步骤。

新建一个 opecv.pc (勾选了就跳过此步骤,勾选生成的opencv4.pc 我印象中好像不用修改的,不放心可以打开看看确认一下 )

现在我们自己造一个 opencv.pc (下面的代码中一份是我自己复制的 opencv.pc,一份是官方的 opencv4.pc,大家可以自行选择(当然是官方的好),然后根据自己路径修改(下面会提怎么修改))

vim opencv.pc
 
# 在里面输入以下内容
 
# 这个是我不知道 OPENCV_GENERATE_PKGCONFIG 选项 的时候复制别人的
# ---------------------开始(这行不用复制)-------------------------
# Package Information for pkg-config
prefix=/usr/local
exec_prefix=${prefix}
includedir=${prefix}/include
libdir=${exec_prefix}/lib
 
Name: OpenCV
Description: Open Source Computer Vision Library
Version: 4.5.0
Cflags: -I${includedir}/opencv4 -I${includedir}/opencv4/opencv2
Libs: -L${exec_prefix}/lib -lopencv_shape -lopencv_stitching -lopencv_superres -lopencv_videostab -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_datasets -lopencv_dpm -lopencv_face -lopencv_fuzzy -lopencv_line_descriptor -lopencv_optflow -lopencv_video -lopencv_plot -lopencv_reg -lopencv_saliency -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_rgbd -lopencv_surface_matching -lopencv_text -lopencv_ximgproc -lopencv_calib3d -lopencv_features2d -lopencv_flann -lopencv_xobjdetect -lopencv_objdetect -lopencv_ml -lopencv_xphoto -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_photo -lopencv_imgproc -lopencv_core
# ---------------------结束(这行不用复制)-------------------------
 
# 下面这个是我勾选 OPENCV_GENERATE_PKGCONFIG 生成的官方的 opencv4.pc
# ---------------------开始(这行不用复制)-------------------------
# Package Information for pkg-config
 
prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir_old=${prefix}/include/opencv4/opencv
includedir_new=${prefix}/include/opencv4
 
Name: OpenCV
Description: Open Source Computer Vision Library
Version: 4.5.0
Libs: -L${exec_prefix}/lib -lopencv_gapi -lopencv_stitching -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_objdetect -lopencv_dpm -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hfs -lopencv_img_hash -lopencv_line_descriptor -lopencv_quality -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_superres -lopencv_optflow -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_plot -lopencv_videostab -lopencv_video -lopencv_xfeatures2d -lopencv_shape -lopencv_ml -lopencv_ximgproc -lopencv_xobjdetect -lopencv_objdetect -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_flann -lopencv_xphoto -lopencv_photo -lopencv_imgproc -lopencv_core
Libs.private: -ldl -lm -lpthread -lrt
Cflags: -I${includedir_old} -I${includedir_new}
 

要注意的是以下我圈住的 5 个框。

(1) prefix 这个是根据自己路径去设置的(/home/你的名字/你的路径),因为我安装在/usr/local ,看下图可以看到 /usr/local 是 include 和 lib 的上一级目录,所以路径写到这就好了。切忌写成 ~/这样的路径(血的教训)。

(2)includedir 就是包含的头文件目录

​ libdir 就是库的目录

(3)Version 这个是你自己安装opencv的版本

(4)Cflags 这个就起码精确到 opencv4 ,要不然以后写程序 可能要 #include<opencv4/opencv2/opencv.hpp>

(5)Libs: 精确到 lib 目录就好了

大家可以根据自己安装的路径去设置。
那么这个 opencv.pc 要放在哪里?

这就又要讲到 pkg-config,它默认会去/usr/lib/pkgconfig 里面找 opencv.pc 。当它在这里找不到 opencv.pc ,它就会到 PKG_CONFIG_PATH 所设置的环境变量去找,如果还没找到就会报错,比如上两个测试的报错。所以:

如果是 opencv4.pc 的就把下面提到的 opencv.pc 改为 opencv4.pc,当然你也可以重命名为 opencv.pc

方法一:移动 opencv.pc 到 /usr/lib/pkgconfig
在这里插入图片描述

方法二:把 opencv.pc 放在你想放的路径,然后

1. 打开 bash.bashrc
 
sudo gedit /etc/bash.bashrc
 
2. 在文件后添加
 
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/设为你的opencv.pc的路径
 
export PKG_CONFIG_PATH
 
3. 更新配置
 
sudo updatedb
2、配置库路径

安装成功后还需要设置opencv的环境变量。打开文件:

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

将以下内容添加到最后:

/usr/local/lib

接下来配置库:

sudo ldconfig

更改环境变量:

sudo gedit /etc/bash.bashrc

在文件后添加:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
 
export PKG_CONFIG_PATH

到此,安装和配置的整个过程都完成了!

这部分内容复制于博主「wuyu1125」原文链接:https://blog.csdn.net/wuyu1125/article/details/112291576

5.测试

这部分可以参考引言中的几个博主的文章。再次感谢几位博主,如有侵权,私信删文!

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用\[1\]和引用\[2\]的内容,你可以使用以下命令在Ubuntu 18.04下安装cmake-3.25: 1. 打开终端。 2. 输入以下命令并按回车键: ``` sudo mv cmake-3.25 /opt/cmake-3.25 sudo ln -sf /opt/cmake-3.25/bin/* /usr/bin/ ``` 这将把cmake-3.25移动到/opt目录,并创建符号链接以使其可在/usr/bin目录中访问。 请注意,你需要将"cmake-3.25"替换为你实际下载和安装cmake的路径。 另外,根据引用\[3\]的内容,你可能需要安装CMake 3.11或更高版本才能编译fastdds。因此,安装cmake-3.25可能无法满足你的要求。你可以尝试安装更高版本的CMake,或者查看fastdds的要求并相应地更新CMake版本。 #### 引用[.reference_title] - *1* [2、ubuntu18.04安装cmake](https://blog.csdn.net/weixin_44698673/article/details/125964197)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Ubuntu18.04安装Cmake(最新最详细亲测)](https://blog.csdn.net/KIK9973/article/details/118796510)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [ubuntu18.04cmake安装](https://blog.csdn.net/zhangzl4321/article/details/128152099)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值