Ubuntu 下 opencv4.8.0 (包含拓展库) 的编译安装

首先展示一下我电脑的信息:

 zhaocake@zhaocake-BoDE-WXX9  ~  uname -a
Linux zhaocake-BoDE-WXX9 5.19.0-46-generic #47~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Jun 21 15:35:31 UTC 2 x86_64 x86_64 x86_64 GNU/Linux

下载源码 

opencv-4.8.0.zip: https://codeload.github.com/opencv/opencv/zip/refs/tags/4.8.0

opencv-contrib-4.8.0.zip: https://codeload.github.com/opencv/opencv_contrib/zip/refs/tags/4.8.0

 安装依赖和cmake工具等

sudo apt-get install build-essential 
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

后面我发现在安装扩展库时还有一部分依赖没有装。

sudo apt-get install libgtk-3-dev
sudo apt-get -y install libgstreamer-plugins-base1.0-dev
sudo apt-get -y install libgstreamer1.0-dev

 关于你缺少了什么依赖,可以通过阅读cmake时的输出来看,cmake的命令在后文。

Ubuntu 下 opencv4.8.0 (包含拓展库) 的编译安装_第1张图片

解压,准备编译

将下载下来的源码解压,并将contrib源码文件夹移动到opencv文件夹中。

Ubuntu 下 opencv4.8.0 (包含拓展库) 的编译安装_第2张图片

 在这个opencv-4.8.0文件夹下,进入准备编译的文件夹。

mkdir build && cd build

注意:如果你不想安装opencv的其他一些语言的接口,可以自行参考下面的命令。(也可以修改CMakeList.txt文件来达到目的)

指定编译类型,并将编译后的库安装到/usr/local/

sudo cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.8.0/modules -D BUILD_JAVA=OFF -D BUILD_opencv_python2=OFF -D BUILD_opencv_python3=OFF CMAKE_INSTALL_PREFIX=/usr/local ..

这时会输出很多信息,生成make。

进行编译

sudo make -j8

sudo make 是单线程,使用-j可以指定线程数,加快速度。一般来说,可以把线程数取为cpu核心数的两倍。

需要等待一会。等待时间与线程数和cpu的性能有关。

安装到/usr/local

sudo make install

 然后可以看到库已经安装到了目标目录了。

配置导入路径

sudo gedit /etc/ld.so.conf

在打开的文件后面添加/usr/local/lib,然后用下面的命令加载更新后的配置。

sudo ldconfig

配置环境

修改rc文件。我是zsh的shell,所以是.zshrc。

对于大多数情况:

vim ~/.bashrc

在文件末尾添加

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

 使用命令查看opencv的安装情况。

pkg-config opencv --modversion

出现如下情况。 

Ubuntu 下 opencv4.8.0 (包含拓展库) 的编译安装_第3张图片

 进行解决:

cd /usr/local/lib
sudo mkdir pkgconfig # 如果已经存在则不需要再创建
cd pkgconfig
sudo vim opencv.pc

写入以下信息:

prefix=/usr/local
exec_prefix=${prefix}
includedir=${prefix}/include
libdir=${exec_prefix}/lib
 
Name: opencv
Description: The opencv library
Version:4.8.0
Cflags: -I${includedir}/opencv4
Libs: -L${libdir} -lopencv_shape -lopencv_stitching -lopencv_objdetect -lopencv_superres -lopencv_videostab -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_video -lopencv_photo -lopencv_ml -lopencv_imgproc -lopencv_flann  -lopencv_core
~                                               

再次修改~/.bashrc,添加:

export  PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

注意:不要忘了更新rc文件。

最后验证

在目录编译目录opencv/samples/cpp/example_cmake中。

运行下列命令检验: 

cmake .
make
./opencv_example

 在clion中:

 并不报错。但是这时不能够直接导入opencv2/opencv.hpp,我们还需要添加一个软链接。

sudo ln -s /usr/local/include/opencv4/opencv2 /usr/include

如果你处理不当导致了一些错误,那么可以另外参考一些文章来删除这个软链接并更具你自己的目录进行链接。

Linux怎么取消软链接_ln取消软连接_dufufd的博客-CSDN博客

附:确定contrib安装成功

当然,你也可以写一段代码根据是否运行来确定是否安装成功。

 

你可能感兴趣的:(环境和报错处理,Ubuntu学习与使用,ubuntu,opencv)