python opencv cython

在python中import cython编译的.so文件时报错

ImportError: ./salmetric.so: undefined symbol: _ZN2cv12_OutputArrayC1ERNS_3MatE

解决方法见4

 

1.ldd –r salmetric.So 列出所有的引用和符号

在一堆py开头的未定义的符号中有两个以ZN2cv开头的,是opencv的问题

 

2.c++filt _ZN2cv12_OutputArrayC1ERNS_3MatE 找出出错的函数

输出cv::_OutputArray::_OutputArray(cv::Mat&)

是opencv的问题,考虑版本不匹配问题

 

3.由于我不是root用户,在自己文件夹安装了opencv3.4.6,应该是版本混乱问题

但是一开始将怀疑对象放在python上了

 

怀疑是因为Cython用的opencv版本和python不一样

尝试

vim ~/.bashrc

export PYTHONPATH=$PYTHONPATH:~/program/opencv3/lib/python2.7/dist-packages

source ~/.bashrc

仍不可用,

 

ls usr/bin/python* 查看python版本

发现存在多个版本,设置版本:

vim ~/.bashrc

加入alias python='/usr/bin/python3.5'

source ~/.bashrc

再import salmetric.so

报错:Segmentation fault (core dumped)

 

cython重新编译salmetric

报错:没有模块cython

去掉加入的alias后仍报错,检查发现cython安装在2.7下

显式设置版本为2.7后,编译通过

vim ~/.bashrc

加入alias python='/usr/bin/python2.7

source ~/.bashrc

再次import ,仍报ImportError: ./salmetric.so: undefined symbol: _ZN2cv12_OutputArrayC1ERNS_3MatE,伤心

 

4.怀疑opencv版本问题

参考:https://stackoverflow.com/questions/31496020/importerror-on-cv2-so

第二条HuayiZeng的回答

vim ~/.bashrc

加入

export C_INCLUDE_PATH=$C_INCLUDE_PATH:~/program/opencv3/include/:~/program/opencv3/include/opencv2/

export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:~/program/opencv3/include/:~/program/opencv3/include/opencv2/

export PATH=$PATH::~/program/opencv3/bin/

import 成功

over,撒花完结

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值