|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
代码 #surf
surf = cv2.xfeatures2d.SURF.create()
kp1, des1 = surf.detectAndCompute(img_gray1, None)
kp2, des2 = surf.detectAndCompute(img_gray2, None)
outImage1 = cv2.drawKeypoints(img_1, kp1, outImage=np.array([]), flags=0)
outImage2 = cv2.drawKeypoints(img_2, kp2, outImage=np.array([]), flags=0)
cv2.imwrite("surf1.png", outImage1)
cv2.imwrite("surf2.png", outImage2)
报错:cv2.error: OpenCV(4.9.0) D:\a\opencv-python\opencv-python\opencv_contrib\modules\xfeatures2d\src\surf.cpp:1028: 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::SURF::create'
这个错误是因为SURF算法的实现涉及到了专利问题,OpenCV默认不包含这部分代码。要解决这个问题,你可以尝试以下两种方法:
方法一:使用SIFT算法
SIFT是另一种常用的特征提取算法,可以代替SURF进行图像匹配。只需要将代码中的`cv2.xfeatures2d.SURF.create()`替换为`cv2.xfeatures2d.SIFT_create()`即可。
方法二:重新编译OpenCV库
你可以按照错误信息中的提示,设置`OPENCV_ENABLE_NONFREE`选项并重新构建OpenCV库。这样做的话,会将SURF算法的专利限制去除,但请注意,这可能会涉及到一些法律风险,所以在商业项目中慎重选择。
无论你选择哪种方法,重点是理解错误的原因和解决方法。祝你编程愉快!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
|
|