Link to Gist of code.我正在尝试重建一张撕碎的纸。第一步是检测撕裂的边缘:
接下来,旋转一个撕裂的边缘并将其与另一撕裂的边缘进行比较:
当两个轮廓相互匹配时,文档将对齐。旋转一件,比较撕边。称为match
的分数描述了两个轮廓之间的匹配:
tempA = draw_contour(tempA, b, 123, 3)
tempB = draw_contour(tempB, a, 123, 3)
tempC = tempA + tempB
_, thresh = cv2.threshold(tempC, 220, 255, cv2.THRESH_BINARY_INV);
thresh = 255 - thresh
match = sum(sum(thresh))
轮廓匹配的计算是基本的。我在单独的图像上绘制轮廓。对图像求和并应用阈值。这将计算两个轮廓重叠处的像素数。这种方法效果很好,但是比较多个边缘时太慢,无法实用。