首先展示一下我电脑的信息:
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
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的命令在后文。
将下载下来的源码解压,并将contrib源码文件夹移动到opencv文件夹中。
在这个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的性能有关。
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
出现如下情况。
进行解决:
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
并不报错。但是这时不能够直接导入opencv2/opencv.hpp,我们还需要添加一个软链接。
sudo ln -s /usr/local/include/opencv4/opencv2 /usr/include
如果你处理不当导致了一些错误,那么可以另外参考一些文章来删除这个软链接并更具你自己的目录进行链接。
Linux怎么取消软链接_ln取消软连接_dufufd的博客-CSDN博客
当然,你也可以写一段代码根据是否运行来确定是否安装成功。