Linux下编译安装OpenCV(基于C++,生成so库供python调用)

下载针对linux平台的源码包,这里下载3.1.0的:

Linux下编译安装OpenCV(基于C++,生成so库供python调用)_第1张图片

使用cmake来产生makefile文件的,我们先建立一个Build文件,用来存放编译后文件:

执行cmake, 注意,cmake版本需要大于2.8.7才行(这里在Centos7上编译)

出现几个错误:

Linux下编译安装OpenCV(基于C++,生成so库供python调用)_第2张图片

前面两个安装依赖包即可:

Linux下编译安装OpenCV(基于C++,生成so库供python调用)_第3张图片

后面提示下载ippicv失败,估计忘了问题,这里找到缺少的软件然后下载它并存放到这个目录中:

使用下载的覆盖它然后重新cmake:

Linux下编译安装OpenCV(基于C++,生成so库供python调用)_第4张图片

可以:

Linux下编译安装OpenCV(基于C++,生成so库供python调用)_第5张图片

接下来执行"make",囧~好像有点慢,等了12分钟……:

Linux下编译安装OpenCV(基于C++,生成so库供python调用)_第6张图片

接着执行"sudo make install":

Linux下编译安装OpenCV(基于C++,生成so库供python调用)_第7张图片

安装成功,相关路径也打印出来了,想用python测试下,发现找不到"cv2.so",这是之前的python没有安装numpy,所以编译opencv时没有包含进来,使用pip下载numpy后重新编译安装一次opencv即可。但是安装numpy时老是断线,这些源在国外,增加配置文件,修改为国内源即可:

Linux下编译安装OpenCV(基于C++,生成so库供python调用)_第8张图片

更新pip源(这里使用清华的),增加如下conf配置文件:

Linux下编译安装OpenCV(基于C++,生成so库供python调用)_第9张图片

更新后,速度杠杠的~

然后重新安装opencv:

Linux下编译安装OpenCV(基于C++,生成so库供python调用)_第10张图片

………………但是发现还是没找到cv2.so或libcv2.so,先不用python咯,后面再看看有什么办法,或者有谁可以告诉我一下呢?用C++测试吧:

Linux下编译安装OpenCV(基于C++,生成so库供python调用)_第11张图片

运行,OK:

现在生成动态so库,供python调用:

Linux下编译安装OpenCV(基于C++,生成so库供python调用)_第12张图片

python测试:

Linux下编译安装OpenCV(基于C++,生成so库供python调用)_第13张图片

当然,这里的cpp应写成类,这样调用main函数不规范,改写成如下:

Linux下编译安装OpenCV(基于C++,生成so库供python调用)_第14张图片

增加py测试文件:

Linux下编译安装OpenCV(基于C++,生成so库供python调用)_第15张图片

运行后包如下错误:

Linux下编译安装OpenCV(基于C++,生成so库供python调用)_第16张图片

objdump来看下test.so的导出符号表:

Linux下编译安装OpenCV(基于C++,生成so库供python调用)_第17张图片

找不到"print_cv_version",python只能调用C函数,因此,增加"extern "C""编译说明来让C连接器识别,改写test.cpp类如下:

Linux下编译安装OpenCV(基于C++,生成so库供python调用)_第18张图片

生成so文件后再看看导出函数:

Linux下编译安装OpenCV(基于C++,生成so库供python调用)_第19张图片

了,再运行看看:

你可能感兴趣的:(OpenCV,Unix/Linux,PYTHON)