目标是基于比周围其他区域更暗的垂直中心线在 python 中水平分割图像(双报纸页面)。
示例图片:
使用 opencv( cv2
) 从黑色背景中对双页进行初始裁剪和旋转有一些运气cv2.Canny
,然后根据cv2.contourArea
.
但是,现在我只想找到一条中心线,然后将图像分成两个单独的图像。再次使用cv2.Canny
我看到它能够识别该中心线,但不确定如何识别那条长的垂直线并使用它来分割图像:
最终目标将是两个图像,如下所示:
任何建议都将受到欢迎。
目标是基于比周围其他区域更暗的垂直中心线在 python 中水平分割图像(双报纸页面)。
示例图片:
使用 opencv( cv2
) 从黑色背景中对双页进行初始裁剪和旋转有一些运气cv2.Canny
,然后根据cv2.contourArea
.
但是,现在我只想找到一条中心线,然后将图像分成两个单独的图像。再次使用cv2.Canny
我看到它能够识别该中心线,但不确定如何识别那条长的垂直线并使用它来分割图像:
最终目标将是两个图像,如下所示:
任何建议都将受到欢迎。
首先,运行水平渐变,以便只突出垂直边缘。您可以使用这些系数计算水平梯度:
-1 0 1
-2 0 2
-1 0 1
然后计算垂直列的总和,您可以使用np.sum(array,axis=0)
,您将得到:
为了便于查看,我重新塑造了它 - 它实际上只有 1 像素高。希望您能在 Numpy 中看到中间的亮白线argmax()
。当你只做一个水平渐变时也会更好,因为目前我使用的是紫色和黄色图像,垂直和水平边缘增强了。
请注意,这种方法的灵感是您说您“想要识别那条长而垂直的中心线”,其基本原理是一长条白色像素的总和会很大。请注意,我假设您的图像是去偏斜的(因为您说线条是垂直的),并且这种方法可能不适用于“垂直”线将分布在几列中的倾斜图像。