opencv编译失败 Opencv3.3编译安装至python的坑 | 您所在的位置:网站首页 › 英语rap经典词 › opencv编译失败 Opencv3.3编译安装至python的坑 |
opencv编译失败 Opencv3.3编译安装至python的坑
发表于:2019-11-18 编译安装OpenCV绝对是一件让人发狂的事情,CMake繁多的选项,国内蛋疼的网速,实在让人无力吐槽,然而为了使用contrib包,我不得不重新编译他。 OpenCV的编译其实OpenCV编译并不是很难,但是国内蛋疼的网速实在令人无法忍受,首先简述一下编译过OpenCV的过程 我的编译环境是deepin15 准备工作首先我们用apt安装必备的库(虽然大部分我在之前已经安装过了 orz) 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建议大家在官方文档多看下相关的参数和你需要的语言环境,根据自己具体需要来安装自己需要的包 创建自己的工作目录,cd进去clone这两个库 cd ~/这里需要注意,opencv和contrib必须对应否则编译会失败,因此我此处clone了最新的 opencv这两个库都相当大,而github的速度相当慢,有一种方法是使用coding.net 或者Oschina导入然后clone, 我在此处通过改CDN来解决访问不稳定的问题 使用CMAKE从源码构建项目1.创建临时目录用来存储我们编译后的opencv库,你可以随意命名,我这用来表示这个目录。 cd ~/opencv mkdir build cd build2.构建项目 cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..这里列举了最基础的两个参数,编译类型和安装目录。 我这里推荐使用cmake-gui来构建,他能清晰列出可选参数,根据自己需求选择就行。 安装cmake-gui sudo apt-get install cmake-qt-gui cmake-gui这里不多赘述cmake-gui的使用,只是列出我使用的参数 cmake -D CMAKE_BUILD_TYPE=Release \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D OPENCV_EXTRA_MODULES=../../opencv_contrib/modules \ -D WITH_LIBV4L=ON \ -D WITH_CUDA=OFF \ ..稍微解释一下,我之前使用pytorch等深度学习库时,安装过CUDA,但是cmake的自动配置有问题,因此我关闭了CUDA,使用默认的OPENCL LIBV4L是因为构建时找不到videoio.h这个库,因此可以使用下面的命令来解决 sudo apt-get install libv4l-dev若是还不能解决可以加入WITH_V4L=OFF这个参数 3.python相关的参数 若是想指定你的python库安装路径请在此处指定参数 PYTHON2(3)_EXECUTABLE = #python执行路径 PYTHON_INCLUDE_DIR = /usr/include/python#python库所在路径 PYTHON_INCLUDE_DIR2 = /usr/include/x86_64-linux-gnu/python PYTHON_LIBRARY = /usr/lib/x86_64-linux-gnu/libpython.so #python本身的动态链接文件 PYTHON2(3)_NUMPY_INCLUDE_DIRS = /usr/lib/python/dist-packages/numpy/core/include/ #NUMPY所在位置因为每个人之前的环境不一样,你可能要补全一些环境 sudo apt-get install python-numpy sudo apt-get install python3-numpy sudo apt-get install libpython-dev libpython3-dev4.然后就可以等待愉快的配置了。。。。。个头!!!!!! 国内环境实在太他蛋疼了!!!!!!!!!!!!!!!正值大会,我的梯子在开会前一天突然全部变红,更是令人蛋疼 参考了这篇文章 ipp_file=ippicv_2017u2_lnx_intel64_20170418.tgz && ipp_hash=$(md5sum ../$ipp_file | cut -d" " -f1) && ipp_dir=.cache/ippicv && mkdir -p $ipp_dir && cp ../$ipp_file $ipp_dir/$ipp_hash-$ipp_file在opencv目录下进行如上命令即可 可能有些人处出现ffmpeg无法下载的情况,一般使用apt大法 sudo apt-get install ffmpeg-dev基本可以解决 编译与安装编译 我在此处没有任何问题,直接 make -j4安装 sudo make install anaconda安装cv2在anaconda安装cv2时出现了个神奇的错误,在命令行调用完美,在使用jupyter时却出现问题 安装其实默认得make install已经将cv2安装至python目录下了,但是我要安装的是anaconda的python,恰巧anaconda的环境变量我是放在系统的python环境变量下的,平时使用source activate root来使用,自然make install并没有进行安装。 我们在此处可以拷贝make这一步生成的opencv的动态链接文件 如图 我们将其拷贝至anaconda默认python的库目录下 cp cv2.cpython-35m-x86_64-linux-gnu.so ~/anaconda3/lib/python3.6/site-packages/cv.so之后我使用默认的python调用cv完全没有问题,但是奇怪的是在jupyter notebook出现了很奇妙的问题 jupyter notebook import Error我在jupyter调用cv2时出现import error这一报错 Import error GLIBCXX_3.4.21 not found when importing cv2大概就是上面这样子的,没有保存当时报错的截图 GLIBCXX的问题是libgcc链接可能在gcc版本更新后链接没更新导致的,一般anaconda使用万能句法 conda install libgcc但是这次并没有解决, 使用下面句子检查conda默认的libgcc的链接 ldd anaconda3/lib/libstdgcc.so.6或者 strings anaconda3/lib/libstdgcc.so.6 | grep GLIBCXX如果缺少对应GLIBCXX,使用软链接进行链接 cd anaconda3/lib/ mv libstdc++.so.6 libstdc++.so.6.old ln -s /usr/lib64/libstdc++.so.6 libstdc++.so.6就当我信心满满的打开jupyter使用import cv2时 现实给了我一个狠狠的耳光,import error,这就很尴尬了,到底怎么解决? 更改核在python的命令行可以运行,jupyter 却没法运行,是不是可能jupyter核设置有些问题? 不同环境下kenels存在的目录可能不同,一下是官方提供的可能的位置. 我的kernel目录在anaconda3/share/jupyter/kernels/,打开anaconda3/share/jupyter/kernels/python3目录下的kenel.json进行编辑 修改前 修改后 打开jupyter notebook 运行 import cv2 一切正常.opencv的编译安装终于结束了 后记虽然不知道为什么把环境变量的python改成绝对路径就ok了(也许是anaconda的python在环境变量的顺序在系统后面的原因),但是管他呢,我特码再也不想配置opencv了. GFW真(和谐和谐) |
CopyRight 2018-2019 实验室设备网 版权所有 |