无法在OpenCV中使用SURF,SIFT
我正在尝试一个简单的事情
detector = cv2.SIFT()
并得到这个错误
detector = cv2.SIFT()AttributeError: 'module' object has no attribute 'SIFT'
我不明白,因为安装了cv2。
cv2.__version__
是
$Rev: 4557 $
我的系统是Ubuntu 12.04。
也许有人遇到了同样的问题,可以帮助我。
长话短说, testypypypypy.py :
import cv2detector = cv2.SIFT()
错误:
Traceback (most recent call last): File "testypypy.py", line 3, in <module>
detector = cv2.SIFT()
AttributeError: 'module' object has no attribute 'SIFT
如果我接受SURF
它是因为SURF
存在,dir(cv2)
但是如果我也接受,则会cv2.BFMatcher()
遇到相同的错误…因此它丢失了,我必须添加它,但我不知道如何。
回答:
我认为这远非“正确”的方法(Ubuntu上的“正确”方法似乎是坚持使用损坏的和/或过时的OpenCV),但对我来说,从源代码构建opencv-2.4.6.1会带回来cv2.SIFT和cv2.SURF。
脚步:
- 从opencv.org下载opencv- 2.4.6.1.tar.gz。
提取源:
tar -xf opencv-2.4.6.1.tar.gz -C /tmp
配置源。这将告诉OpenCV安装到主目录中的.opencv-2.4.6.1:
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D BUILD_PYTHON_SUPPORT=ON \
-D WITH_XINE=ON \
-D WITH_OPENGL=ON \
-D WITH_TBB=ON \
-D BUILD_EXAMPLES=ON \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
-D WITH_V4L=ON \
-D CMAKE_INSTALL_PREFIX=~/.opencv-2.4.6.1 \
/tmp/opencv-2.4.6.1
构建并安装:
cd /tmp/opencv-2.4.6.1
make -j4
make install
设置PYTHONPATH(这在bash中有效,我对其他shell毫无头绪):
export PYTHONPATH=~/.opencv-2.4.6.1/lib/python2.7/dist-packages
现在,如果我启动python并导入cv2(对我来说,这将产生gnome-keyring警告),则我有cv2.SIFT和cv2.SURF可用。
以上是 无法在OpenCV中使用SURF,SIFT 的全部内容, 来源链接: utcz.com/qa/398269.html