मैं दो चित्रों की तुलना करने के लिए कुछ अजगर कोड है:knnMatch कश्मीर के साथ काम नहीं करता है = 1
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 <module>
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