Linux下OpenCV的安装与测试成功教程(解决E: 无法定位软件包 libjasper-dev、无法找到directory `opencv.pc‘、fatal error:“highgui.h“)

本文档记录了在Ubuntu 20.04上手动安装OpenCV 4.5.5的详细步骤,包括下载源码、解压、配置依赖、编译、安装、配置环境变量和验证安装成功的过程。遇到的问题如库文件缺失、连接失败等均有解决方法。
摘要由CSDN通过智能技术生成

目录

前言

下面是步骤

1、下载OpenCV源码

2、解压到指定目录并创建build目录

3、下载编译OpenC源码的cmake和一些依赖库。

4、检查cmake安装版本,检查是否安装成功

5、接下来用cmake编译opencv。

6、系统环境变量进行配置

7、c++程序配置环境变量

8、确保opencv4.pc在指定位置

9、利用官方samples库验证是否安装成功


前言

好激动,断断续续装了两三天才装上,踩了好多坑。

这里把成功安装的步骤详细写下来,如果有小伙伴需要,可以尝试一下,但我不能保证你也可以装好。

首先说一下我的各个版本(不谈版本的安装教程都是耍流氓!

是用虚拟机软件:VirtualBOX6.1.30

系统版本:ubuntu-20.04.3-desktop-amd64(最小安装模式,中文)

OpenCV版本:4.5.5

安装时间:2022.2.11

下面是步骤

1、下载OpenCV源码

进入OpenCV的官方下载地址Releases - OpenCV,下载Sources。为啥官方上有Windows和MacOS的版本却没有LInux的版本?由于Linux环境比较复杂多样,所以需要将源码下载下来在本机安装好依赖库之后,自行编译。

2、解压到指定目录并创建build目录

下载好之后我是通过终端以下指令打开root的文件管理器,将下载好的zip文件解压到了/opt里面然后更名为opencv.(作为小白,暂时只知道这样子好操作)

sudo nautilus

 进入该文件夹创建一个build文件夹在终端中进入

sudo -i

cd /opt/build

3、下载编译OpenC源码的cmake和一些依赖库。

apt-get install cmake
 
apt-get install build-essential libgtk2.0-dev libavcodec-dev
 
apt-get install libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev

在安装过程中注意一下有没有“连接失败”或者“忽略”的库,如果有的话执行以下指令后再重新执行前一条指令。如果还是不行可以参考我的领一篇分享Linux在sudo apt-get update或install时出现archive.ubuntu.com连接失败 [IP: 91.189.91.39 80]的错误解决方案

sudo apt-get update

如果出现E: 无法定位软件包 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、检查cmake安装版本,检查是否安装成功

cmake -version

接下来安装pkg-config,用来配置环境变量检查版本是否安装成功。

apt-get install pkg-config

pkg-config --version

5、接下来用cmake编译opencv。

这个步骤需要配置很多参数,如果参数错误可能导致安装好之后也不能使用,如果使用别人的方法编译完成后在测试的时候出现opencv.pc找不到的情况,多半是这个原因

cmake -D WITH_TBB=ON -D WITH_EIGEN=ON -D OPENCV_GENERATE_PKGCONFIG=ON ..
cmake -D BUILD_DOCS=ON -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_EXAMPLES=OFF ..
cmake -D WITH_OPENCL=OFF -D WITH_CUDA=OFF -D BUILD_opencv_gpu=OFF -D BUILD_opencv_gpuarithm=OFF -D BUILD_opencv_gpubgsegm=OFF ..
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
cmake -D WITH_TBB=ON -D WITH_EIGEN=ON -D OPENCV_GENERATE_PKGCONFIG=ON  -D BUILD_DOCS=ON -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_EXAMPLES=OFF  -D WITH_OPENCL=OFF -D WITH_CUDA=OFF -D BUILD_opencv_gpu=OFF -D BUILD_opencv_gpuarithm=OFF -D BUILD_opencv_gpubgsegm=O -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..

这条命令会在build目录里生成对应配置的Makefile文件,可以看到配置信息之间是通过空格和-D来分割和标示的,配置了很多信息,我觉得比较重要的一个是 -D OPENCV_GENERATE_PKGCONFIG=ON,生成opencv.pc文件的配置(注意,opencv4生成的文件叫做opencv4.pc),另外就是 CMAKE_INSTALL_PREFIX=/usr/local这个关于安装路径的配置,这里的安装路径是在/usr/local下,这也是opencv的默认配置。

千万注意,最后的两个..千万不要删,这个指向CMakeLists.txt所在的目录

此时当前目录仍是build,直接编译安装即可

sudo make install

这里需要sudo权限,也有的同学喜欢先make,在make install ,均可,先make的话可以使用make -j8指定多线程编译,会更快

安装成功后会刷出很多信息,仔细看会发现都是说×××库被安装在×××目录下的,我们这里说明一下:因为我们指定了安装路径,所以我们的头文件被放在/usr/local/include/opencv4/opencv2/目录下,我们的库文件被放在/usr/local/lib/目录下,可以进去查看一下这些文件是否是否存在。

接下来可以输入

opencv_version

来判定安装成功的opencv版本号,当出现你安装的opencv版本号时,就安装成功了。

6、系统环境变量进行配置

opencv是一个第三方的库,我们要引用它需要对系统的环境变量进行配置。

vim /etc/ld.so.conf.d/opencv.conf

在文件末尾添加:

/usr/local/lib

如果这是我们第一次安装opencv,这个文件可能是个空文件,这里的/usr/local/lib就是我们安装opencv时安装的那些库的目录

将这个文件保存然后

sudo ldconfig

7、c++程序配置环境变量

接下来要为我们编写c++程序配置环境变量,我们知道一个c文件编译时首先会预处理,将头文件转换为对应的代码,所以第一步会先去找c文件里引用的头文件,然后生成中间文件,中间文件会去找它依赖的库,然后生成可执行文件,这是第二步,我们需要配置的环境变量主要就是这两个方面。

我们这里使用2步骤时安装成功的pkg-config来进行配置

首先在终端输入(这里为了编辑方便先安装一vim)

sudo apt-get install vim-gtk
vim /etc/bash.bashrc

这里是vim的操作,如果有小伙伴不太熟悉的可以跟着操作,按i后终端界面最后一行会出现-插入-,然后通过键盘下方向键一道文件末尾,在文本末尾处鼠标右键粘贴如下代码,然后按Esc后输入:(英文输入法下的冒号)然后输入x回车即可

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

这里是为pkg-config设置系统环境变量,当pkg-config运行时,他会在他的配置目录下查找.pc文件,找到对应的文件就读取它,pkg-config的默认路径是: /usr/lib/pkgconfig/和/usr/share/pkgconfig/,这里我们新给他添加了一个路径/usr/local/lib/pkgconfig。

然后

 source /etc/bash.bashrc 

更新一下系统的环境变量

8、确保opencv4.pc在指定位置

接下来在/usr/local/lib/目录下建立pkgconfig目录,然后将build文件夹下编译生成的opencv4.pc 拷贝进/usr/local/lib/pkgconfig(如果pkgconfig目录已经存在可以进文件夹检查一下是否已经存在opencv4.pc,如果存在即可跳过本步骤)

(可以通过命令行查找opencv4.pc:)

find ./ -name opencv4.pc

然后

 pkg-config --cflags opencv4

测试是否配置好环境变量

这里记住两个值: pkg-config --cflags 代表我们安装的头文件路径, pkg-config --libs opencv4代表我们安装的库文件路径

9、利用官方samples库验证是否安装成功

环境变量配置好后,进到我们解压opencv包的目录,里面有一个samples文件夹,这个里面全是各种语言的测试

cd opencv-4.3.0/samples/cpp/


进到cpp目录下测试c++使用opencv,随便找一个.cpp文件进行编译

例如:

g++ edge.cpp `pkg-config --cflags --libs opencv4`

注意这里的两个``是键盘左上方的符号,不是单引号,这代表shell的运行语句

编译成功就代表你的opencv可以使用啦!!!

然后可以运行看看效果

./a.out

如果出现如下窗口,说明你也安装成功啦,恭喜!

  • 51
    点赞
  • 179
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 28
    评论
根据引用\[1\]和引用\[2\]的内容,你遇到的问题是在安装libjasper-dev时出现了无法定位软件包的错误。解决这个问题的方法是添加一个新的软件源并更新软件包列表,然后再次尝试安装libjasper-dev。 具体的解决步骤如下: 1. 打开终端并输入以下命令添加新的软件源: ``` sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main" ``` 2. 更新软件包列表: ``` sudo apt-get update ``` 3. 最后,再次尝试安装libjasper-dev: ``` sudo apt install libjasper-dev ``` 如果以上方法仍然无法解决问题,你可以尝试引用\[3\]中提到的另一种解决方法: ``` sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main" sudo apt update sudo apt install libjasper1 libjasper-dev ``` 这些方法应该能够解决你遇到的E: 无法定位软件包 libjasper1和E: 无法定位软件包 libjasper-dev的问题。 #### 引用[.reference_title] - *1* *2* [报错与解决](https://blog.csdn.net/yang332233/article/details/122834566)[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^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Opencv依赖安装中sudo apt install libjasper1 libjasper-dev无法定位软件包问题解决](https://blog.csdn.net/weixin_41653613/article/details/126224705)[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^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盒子桥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值