【问题标题】:Split image horizontally with python based on dark center line基于暗中心线用python水平分割图像
【发布时间】:2019-01-30 15:25:29
【问题描述】:

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

示例图片:

使用 opencv (cv2) 使用 cv2.Canny 从黑色背景对双页进行初始裁剪和旋转,然后根据 cv2.contourArea 对轮廓进行排序。

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

最终目标将是如下两张图片:

欢迎提出任何建议。

【问题讨论】:

  • 您可以尝试使用 HoughTransform。另外,如果你知道这条线是垂直的,你只能计算水平梯度而不是 canny。

标签: python opencv python-imaging-library opencv-python


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-23
    • 2018-12-16
    • 2019-08-06
    • 2017-08-05
    • 2021-06-30
    • 2017-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多