99-Ubuntu16.04 安装opencv(C++版本)

NiuMT 2020-01-20 15:18:50
环境 > Ubuntu

[toc]

Ubuntu16.04 安装OpenCV 3.4.x(C++版本)

安装依赖

1.安装ffmpeg
ffmpeg安装

2.安装其他依赖

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 libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev
sudo apt-get install libxvidcore-dev libx264-dev # 处理视频所需的包,可选
sudo apt-get install libatlas-base-dev gfortran # 优化opencv功能,可选
sudo apt-get install ffmpeg

编译opencv

3.安装

cd opencv-3.4.6  #进入opencv的目录
mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local .. 
sudo make -j4  # 使用四线程,电脑线程多可以改大
sudo mkae install

4.配置环境变量

sudo vim /etc/ld.so.conf.d/opencv.conf  # 这个文件并不存在,我们新建一个
然后,在里面写入:
/usr/local/lib  
退出vim

sudo vim /etc/ld.so.conf
添加: 
include /etc/ld.so.conf.d/*.conf
/usr/local/lib  
退出vim
sudo ldconfig  # 使更改生效


sudo vim /etc/bash.bashrc   
在最末尾添加:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH  
退出vim
source /etc/bash.bashrc
sudo updatedb


pkg-config opencv --modversion  # 查看opencv版本

5.测试

进入到opencv的example目录
cd cd samples/cpp/example_cmake/
make
./opencv_example  
# 会输出以下内容,并打开摄像头
Built with OpenCV 3.4.6
Capture is opened

踩坑

1.ippicv

在编译opencv时,会碰到ippicv_2019_lnx_intel64_general_20180723.tgz这个文件下载超级慢的问题
下载网址1:https://github.com/opencv/opencv_3rdparty/tree/ippicv/master_20180723/ippicv
下载网址2:https://links.jianshu.com/go?to=https%3A%2F%2Fraw.githubusercontent.com%2Fopencv%2Fopencv_3rdparty%2Fippicv%2Fmaster_20180723%2Fippicv%2Fippicv_2019_lnx_intel64_general_20180723.tgz
下载后放到自己方便的目录下,随便哪个都行
然后修改 ./3rdparty/ippicv/ippicv.cmake #就是这个文件的第47行
"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}ippicv/" 修改为:
"file:~/Downloads/" #(仅供参考,根据自己的路径填写,填写绝对路径)

2.recipe for target ‘lib/libopencv_videoio.so.3.4.6’ failed
报错信息为:

modules/videoio/CMakeFiles/opencv_videoio.dir/build.make:333: recipe for target ‘lib/libopencv_videoio.so.3.4.2’ failed
make[2]: *** [lib/libopencv_videoio.so.3.4.2] Error 1
CMakeFiles/Makefile2:5205: recipe for target ‘modules/videoio/CMakeFiles/opencv_videoio.dir/all’ failed
make[1]: *** [modules/videoio/CMakeFiles/opencv_videoio.dir/all] Error 2
Makefile:162: recipe for target ‘all’ failed
make: *** [all] Error 2

经过查资料发现时ffmpeg的问题,没有编译好,编译ffmpeg时缺少参数
https://github.com/DeaDBeeF-Player/deadbeef/issues/1691
解决办法: 编译ffmpeg时添加 —extra-cflags=”-fPIC” 参数
./configure —extra-cflags=”-fPIC”

ok

至此,Ubuntu16.04下安装OpenCV已全部结束,请小量食用OpenCV!