因为选择了《智能机器人》这门课程,做实验时需要用到opencv,所以记录安装以及填坑的过程,供更多的人参考。
环境:Ubuntu16.04 + CUDA9.0 + Python2.7 / Python3.5
1.下载opencv-3.4.4和opencv_contrib-3.4.4压缩包
方法一.去官网下载,但是这种方式很慢
https://www.opencv.org/releases.html
方法二.去我的主页找到资源进行下载
https://download.csdn.net/download/qq_33500415/12013661
2.解压缩zip包
unzip opencv-3.4.4.zip
unzip opencv_contrib-3.4.4
3.安装依赖库和cmake执行以下命令
sudo apt-get update
sudo apt-get install cmake
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev
4.进入压缩后的文件夹
cd opencv-3.4.4
5.创建build并进入build文件夹
mkdir build && cd build
6.CMAKE编译
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_PYTHON_EXAMPLES=ON -D INSTALL_C_EXAMPLES=OFF -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-3.4.4/modules -D WITH_CUDA=ON -D WITH_CUBLAS=ON -D DCUDA_NVCC_FLAGS="-D_FORCE_INLINES" -D CUDA_ARCH_BIN="6.1" -D CUDA_ARCH_PTX="" -D CUDA_FAST_MATH=ON -D WITH_TBB=ON -D WITH_V4L=ON -D WITH_QT=ON -D WITH_GTK=ON -D WITH_OPENGL=ON -D BUILD_EXAMPLES=ON ..
具体的参数含义参照https://blog.csdn.net/weixin_42271913/article/details/88997729
6.1 CMAKE出现的问题
下载IPPICV时会卡在这里,不要等了,直接把要的文件手动下载下来,放在文件夹内,然后找到进入到opencv-3.4.4的3rdparty目录下面的ippicv目录,找到ippicv.cmake文件,修改倒数第九行的内容为刚下载的ippicv文件的路径。
接下来还会遇到这样的下载情况,一般要下载很长时间,那就等吧,一次没下完,多执行几次命令。
这样生成配置文件就成功了。
7.执行make命令
sudo make -j8 #看自己电脑CPU的核数,单核直接sudo make
这样就开始编译了
这样就编译完成了!
7.1 make过程中的问题
报错内容:
/usr/bin/ld: /usr/local/lib/libavformat.a(allformats.o): relocation R_X86_64_32 against `.bss’ can not be used when making a shared object; recompile with -fPIC
解决方法:
不管是libavformat.a还是 libavcodec.a 、libavutil.a或libswscale.a引起的报错,都可以先把这几个文件从/usr/local/lib中移动别处先放着,等到编译完成了再放回去。
8.执行安装命令
sudo make install
9.配置环境变量
sudo gedit /etc/ld.so.conf.d/opencv.conf
打开一个空白文件,添加如下内容
/usr/local/lib
让配置生效
sudo ldconfig
10.配置bash
sudo gedit /etc/bash.bashrc
在文末添加
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
保存,执行如下命令使得配置生效
source /etc/bash.bashrc
更新
sudo updatedb
11.配置python2运行opencv
因为我的opencv在python3环境下能运行,但在python2下报错缺少libopencv_contrib.so.2.4.0或者无法导入cv2
所以接在来配置python2可以运行opencv
选择/usr/local/lib/python2.7/dist-packages
在该目录下新建一个 opencv.pth
添加opencv中关于python2.7的库的路径如下
/usr/local/python/cv2/python-2.7
然后就可以看到python2和python3都能调用opencv
12.测试
cd opencv-3.4.4/samples/cpp/example_cmake
目录里有官方cmake的example来测试下
cmake .
make
./opencv_example
可以看到屏幕左上角有打开了摄像头的框框,有一个hello opencv !
THAT‘S ALL !
如果有什么错误之处,还请大家指正。另外参考了一些大佬的文章,见下述引用!
https://blog.csdn.net/qxqxqzzz/article/details/100730688
https://blog.csdn.net/weixin_42271913/article/details/88997729
https://blog.csdn.net/YuYunTan/article/details/85017065
https://blog.csdn.net/u011897411/article/details/89743448
https://blog.csdn.net/u011897411/article/details/89744763