我正在尝试一个简单的事情
detector = cv2.SIFT()
Run Code Online (Sandbox Code Playgroud)
并得到这个错误的错误
detector = cv2.SIFT()
AttributeError: 'module' object has no attribute 'SIFT'
Run Code Online (Sandbox Code Playgroud)
我不明白,因为安装了cv2.
cv2.__version__ 是
$Rev: 4557 $
Run Code Online (Sandbox Code Playgroud)
我的系统是Ubuntu 12.04.
也许某人有同样的问题,可以帮助我.
编辑:
长话短说,testypypypy.py:
import cv2
detector = cv2.SIFT()
Run Code Online (Sandbox Code Playgroud)
错误:
Traceback (most recent call last):
File "testypypy.py", line 3, in <module>
detector = cv2.SIFT()
AttributeError: 'module' object has no attribute 'SIFT
Run Code Online (Sandbox Code Playgroud)
如果我认为SURF它是有效的,因为SURF它在,dir(cv2)但如果我也采取cv2.BFMatcher()我得到相同的错误...所以它失踪了,我必须添加它,但我不知道如何.
所以我想尝试使用:
sift = cv2.xfeatures2d.SIFT_create()
Run Code Online (Sandbox Code Playgroud)
它出现了这个错误:
cv2.error: OpenCV(3.4.3) C:\projects\opencv-python\opencv_contrib\modules\xfeatures2d\src\sift.cpp:1207: error: (-213:The function/feature is not implemented)
This algorithm is patented and is excluded in this configuration; Set OPENCV_ENABLE_NONFREE CMake
option and rebuild the library in function 'cv::xfeatures2d::SIFT::create'
Run Code Online (Sandbox Code Playgroud)
我正在使用Python 3.5.0,opencv(3.4.3)我只是闲着.这是在我尝试安装TensorFlow之后发生的,我试过环顾四周并安装了opencv-contrib-python但是我仍然遇到同样的错误.提前谢谢你,如果我没有提供足够的信息,我会道歉
我真的开始使用python了。我从互联网下载项目。但是当我尝试运行时,出现了这些错误。我认为该项目不支持我的安装模块。如何解决这个问题?
错误
回溯(最近一次调用):文件“compare.py”,第 20 行,在 sift = cv2.xfeatures2d.SIFT_create() cv2.error: OpenCV(4.2.0) /Users/travis/build/skvark/opencv-python /opencv_contrib/modules/xfeatures2d/src/sift.cpp:1210: error: (-213:The function/feature is not implementation) 这个算法是专利的,被排除在这个配置中;设置 OPENCV_ENABLE_NONFREE CMake 选项并在函数“create”中重建库
完整代码
import cv2
import numpy as np
original = cv2.imread("images/original_golden_bridge.jpg")
image_to_compare = cv2.imread("images/george-washington-bridge.jpg")
# 1) Check if 2 images are equals
if original.shape == image_to_compare.shape:
print("The images have same size and channels")
difference = cv2.subtract(original, image_to_compare)
b, g, r = cv2.split(difference)
if cv2.countNonZero(b) == 0 and cv2.countNonZero(g) == 0 and cv2.countNonZero(r) == 0:
print("The images are completely Equal") …Run Code Online (Sandbox Code Playgroud)