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

xiaoxiao2021-02-28  79

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

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

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

出现几个错误:

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

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

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

可以:

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

接着执行"sudo make install":

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

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

更新后,速度杠杠的~

然后重新安装opencv:

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

运行,OK:

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

python测试:

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

增加py测试文件:

运行后包如下错误:

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

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

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

了,再运行看看:

转载请注明原文地址: https://www.6miu.com/read-46198.html

最新回复(0)