Linux下安装Python3.5及其OpenCV3.2接口

电脑里有:Python2.7.5、python3.5.0(后来下载安装的,当下载安装这个版本后,发现输出python -V命令出来的只会是3.5.0l了)、opencv3.2.0、numpy1.9.0(我自己手动下载安装的)。看了网上的很多教程,试了很多遍,弄完以后仍旧没有cv2.so!找了很久原因,看到别人说:

Linux下安装Python3.5及其OpenCV3.2接口

才恍然大悟,原来在cmake时,不管是用python2还是python3,那下面的几栏都得有路径,不然无效!!!!!!!!!!当然中间有个含PYTHON_NUMPY字样的那栏也要填上numpy的路径!

于是我再一次编译安装opencv3.2时候出现:

Linux下安装Python3.5及其OpenCV3.2接口

虽然是个报错,但这里出现了cv2字样以及opencv_python3字样!!!!!!!!!于是我想是不是我自己手动下载的这个numpy的版本不对?!于是我试着yum install numpy,但yum命令用不了会报错,因为yum不支持python3以上的版本!所以我只能将python命令默认到python2.7.5版本而不是python3.5:

Linux下安装Python3.5及其OpenCV3.2接口

然后我再yum install numpy。找到numpy安装在哪里(我的去了usr/lib64/python2.7/site-packages/下面)。然后再看这个numpy的core/include/numpy下有没有_numpyconfig.h(注意不是_numpyconfig.h.in)文件。我找了下,有。也就是说我之前手动下载的numpy里没有找到_numpyconfig.h文件而这里有。于是我把这个_numpyconfig.h复制到我的numpy1.9.0的/numpy/core/include/numpy/下面。(因为我之前cmake时PYTHON_NUMPY_INCLUDE的路径我写的就是numpy1.9.0/numpy/core/include)

接着之前报错的地方继续安装,出现:

Linux下安装Python3.5及其OpenCV3.2接口

看之前的_numpyconfig.h的那个错不报了,解决了。往下编译安装时出现_multiarray_api.h这个错。于是我去我的numpy1.9下面找,果然没有这个文件而在/usr/lib64/python2.7/site-packages/numpy/core/include/numpy下又找到了这个文件。有两种办法:1、按照我之前的解决办法,复制过去,重新编译安装,出现什么错再解决。2、或者直接从cmake那里重新编译OpenCV,重新填写PYTHON_NUMPY的路径!改成什么文件都不缺的/usr/lib64/python2.7/site-packages/numpy/core/include/numpy。我选择了办法2:

Linux下安装Python3.5及其OpenCV3.2接口

PYTHON2_***和PYTHON3_***后的都都要填上路径,尽量补全!!!我除了PYTHON2_INCLUDE_DIR2 PYTHON_LIBRARY_DEBUG PYTHON3_INCLUDE_DIR2 PYTHON3_LIBRARY_DEBUG 这4项没有写路径其它都写了并核对了。仔细看我这里的PYTHON2_NUMPY_INCLUDE_DIRS与PYTHON3_NUMPY_INCLUDE_DIRS的路径,这不是我自己下载的numpy1.9文件夹路径,因为这里面缺少上次报错的一些文件!而现在填上的路径里是不缺这些文件的:

Linux下安装Python3.5及其OpenCV3.2接口

然后configure,接着configure,接着generate即可。

然后去刚刚编译好的文件夹下面,make :

Linux下安装Python3.5及其OpenCV3.2接口

看终于出来cv2字样了,感觉离成功不远了。

继续make install。然后我的即可在刚刚编译的文件夹下找到这个cv2的字样:

Linux下安装Python3.5及其OpenCV3.2接口

这时候通过在整个计算机中查找,我发现/usr/local/lib/python3.5/site-packages下也有这个cv2.cpython-35m-x86_64-linux-gnu.so文件。于是我进入这个目录后:ln -s cv2.cpython-35m-x86_64-linux-gnu.so cv2.so 将那个文件软链接到cv2.so!这样就可以了。(在make install之后我没找到cv2.so文件差点崩溃放弃,还好我没放弃,终于等到你哈哈哈)

看可以了:

Linux下安装Python3.5及其OpenCV3.2接口

看我的这个opencv的python接口只能在python3.5下使用!不过还有个小小的问题就是numpy.core.multiarray failed to import!这个只要不用到就没事,总体import cv2成功!

我查了下numpy.core.multiarray failed to import 这个错误是因为版本不对,我cmake里无论是python3.5还是python2.7用的都是/usr/lib64/python2.7/site-packages/numpy/core/include/numpy!这是不对的!版本不对问题。(你们看之前cmake时的PYTHON2_NUMPY和PYTHON3_NUMPY的路径都是2.7下的那个numpy,而那个numpy其实是1.7版本的,所以这个numpy文件夹只适合python2.7,所以安装完毕时它自动跑去了python2.7的site-packages下面,而python3.5下面就没有!!!!!所以这是不对的!!!!python2.7和python3.5用的都是python2.7的numpy,而我现在是搞Python3.5+OpenCV3.2)我看了网上说python3.5.0的需要numpy1.11.1!一个办法是下载安装numpy1.11.1后重新返回cmake那里写正确的PYTHON_NUMPY路径!或者另一个办法,下载安装新的合适的numpy1.11.1后移入python3.5下面(不知道行不,试试。即我想在不cmake的前提下搞正确就必须待会儿安装好numpy1.11.1后要将numpy1.11.1下的文件夹numpy复制进我之前cmake时指定的PYTHON3_NUMPY的路径中。。。。其实这里心里清楚python2.7和python3.5用的都是Python3.5的numpy,不过我想此时应该不会错。因为我现在弄的Python3.5+OpenCV3.2,只不过是去python2.7的文件夹下读取自己的python3.5的numpy。。。有点绕哦,其实就是爸爸B和妈妈A要找自己的儿子,之前AB将自己的儿子numpy寄养在家庭C中,邻居D也有一个儿子叫numpy。AB非常需要自己的儿子,结果却去D中将numpy接回家(也就是我开始错误的原因),后来知道自己搞错了,于是去C中将自己的儿子接回来(正确))。

我暂时先用方法2,自己去官网下载了一个num1.11.1,然后python3 setup.py install ,结果:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/12642.html