【发布时间】:2021-10-09 11:23:58
【问题描述】:
我目前正在关注这篇文章:https://docs.opencv.org/4.5.2/dc/dc3/tutorial_py_matcher.html
绘制匹配时出现以下错误:
error: (-215:Assertion failed) i1 >= 0 && i1 < static_cast<int>(keypoints1.size()) in function 'cv::drawMatches'
通过经验和一些阅读,我发现当输入图像/矩阵出现问题时,通常会出现 -215 错误代码。我检查了我提供的两张图片中的一张是否因某种原因损坏,但我看不到问题。
这里是有问题的代码:
def j_feature_match(src, needle):
orb = cv2.ORB_create()
kp1, des1 = orb.detectAndCompute(src, None)
kp2, des2 = orb.detectAndCompute(needle, None)
bf = cv2.BFMatcher(cv2.NORM_HAMMING2, crossCheck=False)
matches = bf.match(des2,des1)
matches = sorted(matches, key = lambda x:x.distance)
src_img = cv2.drawMatches(src,kp1,needle,kp2,matches[:10],None,flags=cv2.DrawMatchesFlags_NOT_DRAW_SINGLE_POINTS)
return(src_img, len(matches))
- 编辑:
如评论中所述,图像的分辨率如下: 源代码 = 640x480 针 = 300x400 - EDIT2:我已更改图片以便分享。
谢谢! :)
【问题讨论】:
-
该错误不可重现,可能与输入图像有关。请编辑您的帖子,并添加输入图像
src和needle(如果可以)。 -
src图像直接取自网络摄像头。该图像的分辨率为 640x480,needle图像是 300x400 图像。我想补充一点,我已尝试调整图像大小以匹配彼此,但没有成功。 -
是否直接来自网络摄像头,无关紧要...如果必须,将两个图像保存到文件中。重要的问题是发布可重现的样本。
-
图片已添加到帖子中。 :)
标签: python opencv computer-vision opencv-python feature-detection