我正在尝试将OpenCV 3.0与Anaconda Python3.4一起使用。我从Github编译了opencv源代码以及随附的opencv_contrib存储库,并将它们安装在本地目录中。
现在,启动python我可以导入cv2模块并执行加载和显示图像等操作。然而,似乎子模块xfeatures2d并不存在。
>>> import cv2
>>> cv2.xfeatures2d
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'xfeatures2d'
有趣的是,如果我尝试import cv2.xfeatures2d
,我就不会收到任何错误(尽管我仍然无法使用它)
共享库文件存在于~/MyOpenCV3Install/lib/libopencv_xfeatures2d.so.3.0.0
中。我的第一个猜测是它没有被加载由于某种原因,所以我尝试在启动python之前使用LD_PRELOAD
环境变量强制它。但到目前为止仍然没有运气。
对我而言,使用python3.4环境并不起作用。但是,当使用python2.7环境时,一切正常。导入cv2模块后,我可以调用cv2.xfeatures2d.SURF_create()
之类的函数而不会出错。
有没有人知道为什么xfeatures2d子模块在使用python3.4时不可用?是否有可能为opencv_contrib创建的python绑定与python3不兼容?
编辑:
我在cmake配置步骤中使用了以下选项:
BUILD_opencv_python3=ON
PYTHON3_EXECUTABLE=/home/mi/anaconda/envs/env3.4/bin/python3.4
PYTHON3_INCLUDE_DIR=/home/mi/anaconda/envs/env3.4/include/python3.4.m
PYTHON3_LIBRARY=/home/mi/anaconda/envs/env3.4/lib/libpython3.4m.so
PYTHON3_NUMPY_INCLUDE_DIR=/home/mi/anaconda/envs/env3.4/lib/python3.4/site-packages/numpy/core/include
PYTHON3_PACKAGES_PATH=/home/mi/anaconda/envs/env3.4/lib/python3.4/site-packages