Anaconda Python3.6 OpenCV4.1.0 Ubuntu 16.04源码编译
转载于:https://blog.csdn.net/phdsky/article/details/78248192
anaconda pip或者conda直接install opencv-python的opencv版本无法读取视频,装了ffmpeg也没用,估计是被阉割了,没办法只能下源码编译。
重复一下:系统是Ubuntu 16.04;anaconda是python3.6的,装在了/home/naphid/Documents/anaconda3里;opencv源码版本是3.3。
下完opencv源码后解压,新建一个build文件夹,cd到build;直接输入cmake .. 不出意外opencv会链到系统的python2.7上去(看cache可知),所以需要指定到咱下的anaconda的python3上;另外IPP这个加速包一般被墙了下不来,反正我们也是research不是production,干脆不要算了。下面的命令复制到终端,实在不行就一行行复制,记得把python所有相关路径改到自己的anaconda下。 (用ccmake改也行)
cmake
-D WITH_IPP=OFF
-D PYTHON_DEFAULT_EXECUTABLE=/home/naphid/Documents/anaconda3/bin/python3
-D BUILD_opencv_python3=ON -D BUILD_opencv_python2=OFF
-D PYTHON3_EXCUTABLE=/home/naphid/Documents/anaconda3/bin/python3
-D PYTHON3_INCLUDE_DIR=/home/naphid/Documents/anaconda3/include/python3.6m
-D PYTHON3_LIBRARY=/home/naphid/Documents/anaconda3/lib/libpython3.6m.so.1.0
-D PYTHON_NUMPY_PATH=/home/naphid/Documents/anaconda3/lib/python3.6/site-packages
-D OPENCV_ENABLE_MEMORY_SANITIZER=ON
-D WITH_QT=ON
..
从cmake的summary中确认已经成功链到想要的地方后,开始编译。
make -j4
编译完成后,把编译出来的cv2.cpython-36m-x86_64-linux-gnu.so库拷到anaconda的python库包下;其实不用sudo make install,opencv就已经可以用了,python的warpper都有。
cp /home/naphid/Documents/opencv-3.3.0/build/lib/python3/* ~/Documents/anaconda3/lib/python3.6/site-packages/
终端输入python,import一下cv2,多半会出错。
naphid@phdsky:~/Documents/anaconda3/lib/python3.6/site-packages$ python
Python 3.6.1 |Anaconda 4.4.0 (64-bit)| (default, May 11 2017, 13:09:58)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: /home/naphid/Documents/anaconda3/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /home/naphid/Documents/anaconda3/lib/python3.6/site-packages/cv2.cpython-36m-x86_64-linux-gnu.so)
- 如果出了上面的错误`GLIBCXX_3.4.21’ not found,一定是因为gcc库版本太老,conda装个。
conda install libgcc