在实现sift的时候遇到的一点小问题以及找到的解决方法

import cv2
import numpy as np


# read img
img_org = cv2.imread(r'D:\img\0000.jpg',cv2.IMREAD_COLOR)
gray = cv2.cvtColor(img_org,cv2.COLOR_BGR2GRAY)
cv2.imshow('ogrigin',img_org)
# SIFT
detector = cv2.SIFT()
keypoints = detector.detect(gray,None)
img = cv2.drawKeypoints(gray,keypoints)

cv2.imshow('test',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

上面是一小段代码,运行时会出现 AttributeError: module 'cv2.cv2' has no attribute 'SIFT'错误,后来发现时由于opencv把SIFT等算法整合到xfeatures2d里面了,代码如下

import cv2
import numpy as np

# read img
img_org = cv2.imread(r'D:\img\0000.jpg',cv2.IMREAD_COLOR)
gray = cv2.cvtColor(img_org,cv2.COLOR_BGR2GRAY)
cv2.imshow('ogrigin',img_org)
# SIFT
detector = cv2.xfeatures2d.SIFT_create()
keypoints = detector.detect(gray,None)
img = cv2.drawKeypoints(gray,keypoints)

cv2.imshow('test',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

运行时又出现了AttributeError: module 'cv2.cv2' has no attribute 'xfeatures2d'的问题查询后发现时因为python3以后的OpenCv只是包含了不放呢内容,需要神经网络或者其他函数就需要导入opencv_contrib,我们只需要用pip安装opencv-contrib-python就可以解决问题。然而后续又出现了这样的问题

OpenCV(3.4.4) 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’
将opencv版本退到3.4.2即可解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值