相关疑难解决方法(0)

不能在OpenCV中使用SURF,SIFT

我正在尝试一个简单的事情

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()我得到相同的错误...所以它失踪了,我必须添加它,但我不知道如何.

python opencv surf sift

52
推荐指数
7
解决办法
10万
查看次数

sift = cv2.xfeatures2d.SIFT_create()即使安装了contrib也无法正常工作

所以我想尝试使用:

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但是我仍然遇到同样的错误.提前谢谢你,如果我没有提供足够的信息,我会道歉

opencv python-3.5

34
推荐指数
4
解决办法
4万
查看次数

OPENCV_ENABLE_NONFREE CMake 选项并在函数“create”中重建库

我真的开始使用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)

python opencv python-2.7 python-3.x

5
推荐指数
0
解决办法
6818
查看次数

标签 统计

opencv ×3

python ×2

python-2.7 ×1

python-3.5 ×1

python-3.x ×1

sift ×1

surf ×1