我正在尝试学习 OpenCV,以改进我为比较工程图而编写的脚本。我正在使用本教程中找到的代码(见下文),但我的成功率为零。在本教程中,作者使用空白表单的示例作为参考图像,并使用已完成表单的照片作为要对齐的图像。我的情况非常相似,因为我尝试使用空白绘图标题块作为参考图像,并使用绘图的扫描图像作为要对齐的图像。
我的目标是使用 OpenCV 清理扫描的工程图纸,以便它们正确对齐,但无论我在 MAX_FEATURES 和 GOOD_MATCH_PERCENT 参数中尝试什么,我都会得到一个看起来像黑白星爆的图像。另外,当我查看脚本生成的“matches.jpg”文件时,似乎没有正确的匹配项。我尝试了多张图,得到了相同的结果。
谁能看出这个脚本无法按照我尝试使用它的方式工作的原因吗?
from __future__ import print_function
import cv2
import numpy as np
MAX_FEATURES = 500
GOOD_MATCH_PERCENT = 0.15
def alignImages(im1, im2):
# Convert images to grayscale
im1Gray = cv2.cvtColor(im1, cv2.COLOR_BGR2GRAY)
im2Gray = cv2.cvtColor(im2, cv2.COLOR_BGR2GRAY)
# Detect ORB features and compute descriptors.
orb = cv2.ORB_create(MAX_FEATURES)
keypoints1, descriptors1 = orb.detectAndCompute(im1Gray, None)
keypoints2, descriptors2 = orb.detectAndCompute(im2Gray, None)
# Match features.
matcher = cv2.DescriptorMatcher_create(cv2.DESCRIPTOR_MATCHER_BRUTEFORCE_HAMMING)
matches = matcher.match(descriptors1, descriptors2, None)
# Sort matches by score …Run Code Online (Sandbox Code Playgroud)