【发布时间】:2012-06-22 06:46:28
【问题描述】:
我正在尝试将 opencv 与 python 一起使用。我在 C++ 版本的 opencv 2.4 中编写了一个描述符(SIFT、SURF 或 ORB)匹配代码。我想用python将此代码转换为opencv。我找到了一些关于如何在 c++ 中使用 opencv 函数的文档,但是 python 中的许多 opencv 函数我找不到如何使用它们。这是我的python代码,我目前的问题是我不知道如何在python中使用opencv c++的“drawMatches”。我找到了 cv2.DRAW_MATCHES_FLAGS_DEFAULT 但我不知道如何使用它。这是我使用 ORB 描述符匹配的 python 代码:
im1 = cv2.imread(r'C:\boldt.jpg')
im2 = cv2.cvtColor(im1, cv2.COLOR_BGR2GRAY)
im3 = cv2.imread(r'C:\boldt_resize50.jpg')
im4 = cv2.cvtColor(im3, cv2.COLOR_BGR2GRAY)
orbDetector2 = cv2.FeatureDetector_create("ORB")
orbDescriptorExtractor2 = cv2.DescriptorExtractor_create("ORB")
orbDetector4 = cv2.FeatureDetector_create("ORB")
orbDescriptorExtractor4 = cv2.DescriptorExtractor_create("ORB")
keypoints2 = orbDetector2.detect(im2)
(keypoints2, descriptors2) = orbDescriptorExtractor2.compute(im2,keypoints2)
keypoints4 = orbDetector4.detect(im4)
(keypoints4, descriptors4) = orbDescriptorExtractor4.compute(im4,keypoints4)
matcher = cv2.DescriptorMatcher_create('BruteForce-Hamming')
raw_matches = matcher.match(descriptors2, descriptors4)
img_matches = cv2.DRAW_MATCHES_FLAGS_DEFAULT(im2, keypoints2, im4, keypoints4, raw_matches)
cv2.namedWindow("Match")
cv2.imshow( "Match", img_matches);
“img_matches = cv2.DRAW_MATCHES_FLAGS_DEFAULT(im2, keypoints2, im4, keypoints4, raw_matches)”行的错误信息
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'long' object is not callable
我花了很多时间搜索在 python 中使用 opencv 函数的文档和示例。但是,我很沮丧,因为在 python 中使用 opencv 函数的信息很少。如果有人能教我在哪里可以找到有关如何在 python 中使用 opencv 模块的每个功能的文档,那将非常有帮助。感谢您的宝贵时间和帮助。
【问题讨论】:
标签: python opencv image-processing descriptor