这里只安装了opencv-3.4.5没有安装opencv_contrib3.4.5。下面介绍安装流程:
opencv下载官网:https://opencv.org/releases.html
安装依赖包
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 build-essential qt5-default ccache libv4l-dev libavresample-dev libgphoto2-dev libopenblas-base libopenblas-dev doxygen openjdk-8-jdk pylint libvtk6-dev
sudo apt-get install pkg-config
解压安装包
sudo unzip opencv-3.4.5.zip
cd opencv-3.4.5
mkdir build
下面需要编译,但是在编译之前会遇到ippv无法下载的问题
下载ippicv_2020_lnx_intel64_20191018_general.tgz
链接: https://pan.baidu.com/s/1C05qBz-eSAUIxdwljce0kw 密码: 4q33
注意:ippicv_2020_lnx_intel64_20191018_general.tgz不需要解压
cd opencv-3.4.5/3rdparty/ippicv
sudo vim ippicv.cmake
找到这句话
改成与你下载ippv文件一直对应的文件名
这里改成存放你下载ippv文件的文件夹目录,比如我的ippicv_2020_lnx_intel64_20191018_general.tgz存放在opencv-3.4.5的文件夹下我就填的如图所示
然后保存。
编译
cd opencv3.4.5/build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -DOPENCV_ENABLE_NONFREE=True -D WITH_IPP=OFF …
这里面 -D WITH_IPP=OFF 这句话非常重要,意思是取消ippv文件的网络下载,如果不加这句话,会报错读取不到ippicv_2020_lnx_intel64_20191018_general.tgz这个文件。
出现的错误1
然后编译我又出现了这个错误:
/usr/bin/ld: /usr/local/lib/libavformat.a(allformats.o): relocation R_X86_64_32 against `ff_a64_muxer’ can not be used when making a shared object; recompile with -fPIC /usr/local/lib/libavformat.a: error adding symbols: Bad value collect2: error: ld returned 1 exit status modules/videoio/CMakeFiles/opencv_videoio.dir/build.make:256: recipe for target ‘lib/libopencv_videoio.so.3.4.0’ failed make[2]: *** [lib/libopencv_videoio.so.3.4.0] Error 1 CMakeFiles/Makefile2:7097: recipe for target ‘modules/videoio/CMakeFiles/opencv_videoio.dir/all’ failed make[1]: *** [modules/videoio/CMakeFiles/opencv_videoio.dir/all] Error 2 Makefile:160: recipe for target ‘all’ failed make: *** [all] Error 2
这个问题是你的FFMPEG未安装好
重新编译FFMPEG 参考这个链接
https://jrhar.blog.csdn.net/article/details/109495052
git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg
unzip ffmpeg.zip
cd ffmpeg
chmod 777 configure
sudo ./configure --enable-nonfree --enable-pic --enable-shared
sudo make && sudo make install
(这一步可能会报错,因为bash文件的权限问题,解决方法是把因为权限问题无法编译的bash文件xxxx.bash,使用chmod 777 xxxx.bash )
编译完成后重新编译opencv。
出现的错误2
这里我又遇到了错误,
缺少videodev.h————linux/videodev.h not found
解决方法
sudo ln -s /usr/include/libv4l1-videodev.h /usr/include/linux/videodev.h
缺少videoio.h————sys/videoio.h not found
解决方法
sudo cp /usr/include/opencv2/videoio/videoio_c.h /usr/include/x86_64-linux-gnu/sys
sudo ln -s /usr/include/x86_64-linux-gnu/sys/videoio_c.h /usr/include/x86_64-linux-gnu/sys/videoio.h
具体参看这个链接
https://blog.csdn.net/xbs150/article/details/77840786
完成之后记得在build文件夹下 make clean
然后
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -DOPENCV_ENABLE_NONFREE=True -D WITH_IPP=OFF …
sudo make -j
sudo make install
配置参数
方法1:
sudo /bin/bash -c ‘echo “/usr/local/lib” > /etc/ld.so.conf.d/opencv.conf’
方法2:
sudo gedit /etc/ld.so.conf.d/opencv.conf
//打开后可能是空文件,在文件内容最后添加
/usr/local/lib
==========================================================
然后使用
sudo ldconfig
这里报错
不过无关紧要,继续操作。
sudo gedit /etc/bash.bashrc
但是报错
sudo: gedit: command not found
解决方法
sudo -s
source /etc/bash.bashrc
sudo updatedb
pkg-config opencv --modversion #查看opencv版本
3.4.5 #完成