链接到代码要点。,我正在尝试重建一张被撕破的纸。第一步是检测撕裂的边缘:

接下来,旋转一个撕裂的边缘,并将其与另一个撕裂的边缘进行比较:

当两个等高线匹配时,文档将对齐。旋转一片,比较撕裂的边缘。一个名为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))这两条等高线不太合拍:

这些轮廓很好地结合在一起。在这里,文件是对齐的:

轮廓匹配的计算是基础。我在不同的图像上画轮廓。对图像进行求和,并应用阈值。这将计算两个等值线重叠的像素数。这种方法效果很好,但是当比较几个边时,速度太慢了。
如何计算撕裂边的两条轮廓之间的匹配程度?
发布于 2019-05-08 14:36:45
假设没有任何复杂情况(请参阅我上面的评论),您可以尝试下面概述的过程。见下图。

alpha或180-alphahttps://stackoverflow.com/questions/56031885
复制相似问题