将模块从opencv_contrib添加到opencv

2024-04-23 07:03:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图将xfeatures2d模块从opencv_contrib添加到现有的OpenCV/Python项目中。

我从the repo下载了模块的最新版本,并使用以下附加参数再次构建了OpenCV:

OPENCV_EXTRA_MODULES_PATH=/path/to/opencv_contrib-master/modules
BUILD_opencv_xfeatures2d=ON

生成日志摘录:

-- Installing: /usr/local/lib/python2.7/site-packages/cv2.so
-- Installing: /usr/local/lib/python3.4/site-packages/cv2.so
-- Installing: /usr/local/lib/libopencv_xfeatures2d.3.0.0.dylib

新模块似乎安装正确。我可以在两个Python版本中导入cv2。然而,这两个模块都无法识别该模块应该添加的新功能。

>>> cv2.SURF()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'SURF'
>>> cv2.xfeatures2d.SURF()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'xfeatures2d'

Tags: 模块版本libpackagesusrlocalsitecontrib
3条回答

从pip安装

Python2.x

pip install opencv-contrib-python

Python3.x

pip3 install opencv-contrib-python

如果发生烫发错误,请使用sudo。

我也遇到过同样的问题。我正在使用python 2.7.6和OpenCv 3.0以及其他非免费模块。我在可用的模块中确实有xfeatures2d,并且可以导入它,但是它好像xfeatures2d不包含SIFT或SURF。不管我怎么称呼他们,都是同样的错误:

"AttributeError: 'module' object has no attribute 'SIFT'

我尝试了建议的不同名称空间,直到最近才注意到这个细节,并成功!

$ python

>>>import cv2

>>>help(cv2.xfeatures2d)

你会注意到它回复说它现在被称为。。。

FUNCTIONS

SIFT_create(...)

以及

SURF_create(...)

所以很简单-名称空间不是“cv2.SIFT()”或“cv2.xfeatures2d.SIFT”,而是

cv2.xfeatures2d.SIFT_create()

请试一试!

另一种可能性(也是我发现的最简单的可能性!)将安装2.4.9版本,其中已经包括SIFT和SURF算法。 那你就得这么做

import cv2
sift = cv2.SIFT()
(...)

相关问题 更多 >