python knnmatch_python – knnMatch不适用于K!= 1

我有一些

python代码来比较两个图像:

detector_FeatureDetector_1 = cv2.FastFeatureDetector_create()

detector_FeatureDetector_2 = cv2.FastFeatureDetector_create()

detector_DescriptorExtractor_1 = cv2.BRISK_create()

detector_DescriptorExtractor_2 = cv2.BRISK_create()

detector_DescriptorMatcher_1 = cv2.BFMatcher(cv2.NORM_HAMMING2, crossCheck = True)

detector_DescriptorMatcher_2 = cv2.BFMatcher(cv2.NORM_HAMMING2, crossCheck = True)

image_1 = cv2.imread('/Users/rui/image1.png')

image_2 = cv2.imread('/Users/rui/image2.png')

obj_descriptor_keypoints_1 = detector_FeatureDetector.detect(image_1)

obj_descriptor_keypoints_2 = detector_FeatureDetector.detect(image_2)

keypoints1, obj_descriptor_descriptors_1 = detector_DescriptorExtractor.compute(image_1, obj_descriptor_keypoints_1)

keypoints2, obj_descriptor_descriptors_2 = detector_DescriptorExtractor.compute(image_2, obj_descriptor_keypoints_2)

matches = detector_DescriptorMatcher.knnMatch(obj_descriptor_descriptors_1, obj_descriptor_descriptors_2, k=6)

但是detector_DescriptorMatcher.knnMatch()仅在k = 1时有效.如果k的值不同于1,则返回以下错误:

OpenCV Error: Assertion failed (K == 1 && update == 0 && mask.empty()) in batchDistance, file /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_graphics_opencv/opencv/work/opencv-3.0.0/modules/core/src/stat.cpp, line 3682

Traceback (most recent call last):

File "/Users/rui/main.py", line 191, in

matches = detector_DescriptorMatcher.knnMatch(obj_descriptor_descriptors, obj_descriptor_descriptors_movie_frame, k=6)

cv2.error: /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_graphics_opencv/opencv/work/opencv-3.0.0/modules/core/src/stat.cpp:3682: error: (-215) K == 1 && update == 0 && mask.empty() in function batchDistance

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值