1

目标是基于比周围其他区域更暗的垂直中心线在 python 中水平分割图像(双报纸页面)。

示例图片:

在此处输入图像描述

使用 opencv( cv2) 从黑色背景中对双页进行初始裁剪和旋转有一些运气cv2.Canny,然后根据cv2.contourArea.

但是,现在我只想找到一条中心线,然后将图像分成两个单独的图像。再次使用cv2.Canny我看到它能够识别该中心线,但不确定如何识别那条长的垂直线并使用它来分割图像:

在此处输入图像描述

最终目标将是两个图像,如下所示:

在此处输入图像描述 在此处输入图像描述

任何建议都将受到欢迎。

4

1 回答 1

1

首先,运行水平渐变,以便只突出垂直边缘。您可以使用这些系数计算水平梯度:

-1   0   1
-2   0   2
-1   0   1

然后计算垂直列的总和,您可以使用np.sum(array,axis=0),您将得到:

在此处输入图像描述

为了便于查看,我重新塑造了它 - 它实际上只有 1 像素高。希望您能在 Numpy 中看到中间的亮白线argmax()。当你只做一个水平渐变时也会更好,因为目前我使用的是紫色和黄色图像,垂直和水平边缘增强了。

请注意,这种方法的灵感是您说您“想要识别那条长而垂直的中心线”,其基本原理是一长条白色像素的总和会很大。请注意,我假设您的图像是去偏斜的(因为您说线条是垂直的),并且这种方法可能不适用于“垂直”线将分布在几列中的倾斜图像。

于 2019-01-30T16:48:49.020 回答