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

Posted 盒子桥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux下OpenCV的安装与测试成功教程(解决E: 无法定位软件包 libjasper-dev无法找到directory `opencv.pc‘fatal error:“highgui.h“)相关的知识,希望对你有一定的参考价值。

目录

前言

下面是步骤

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

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

以上是关于Linux下OpenCV的安装与测试成功教程(解决E: 无法定位软件包 libjasper-dev无法找到directory `opencv.pc‘fatal error:“highgui.h“)的主要内容,如果未能解决你的问题,请参考以下文章

安装anaconda后opencv不能用怎么办

ArchLinux安装后的必须配置与图形界面安装教程

red hat linux之SambaDHCPDNSFTPWeb的安装与配置

linux系统opencv的安装与使用

在linux下安装jdk,按照网上教程的步骤,却一直不成功

Linux下安装opencv with-ffmpeg解决无法读取视频的问题