检测图像中的水平白线,并使用OpenCV Python获取它们的坐标
我的目标是使用OpenCV Python将网页分成多个部分(页眉、联系人、页脚等)。我将网页图像转换为灰度,并使用Canny。结果如下: 正如您所看到的,要用人眼检测零件的边界非常清晰,我认为这个问题对于OpenCV来说很小,但我不知道如何将每个零件导出到单独的文件中(或者至少获取线条的坐标) 这是我当前的灰度+Canny代码检测图像中的水平白线,并使用OpenCV Python获取它们的坐标,python,opencv,image-processing,image-segmentation,Python,Opencv,Image Processing,Image Segmentation,我的目标是使用OpenCV Python将网页分成多个部分(页眉、联系人、页脚等)。我将网页图像转换为灰度,并使用Canny。结果如下: 正如您所看到的,要用人眼检测零件的边界非常清晰,我认为这个问题对于OpenCV来说很小,但我不知道如何将每个零件导出到单独的文件中(或者至少获取线条的坐标) 这是我当前的灰度+Canny代码 import cv2 import numpy as np img = cv2.imread("image.png",cv2.IMREAD_GRAYSCALE)
import cv2
import numpy as np
img = cv2.imread("image.png",cv2.IMREAD_GRAYSCALE)
edges = cv2.Canny(img, 5, 10)
使用霍夫线并检查坡度是否为0。你会发现非常有用和有趣。以下是一些获得白线的方法:
OpenCV的
HoughLines
和HoughLinesP
是很好的起点。您只需查看图像行的统计信息。例如,如果您查看沿行的
平均值
强度,边界行的平均值
接近1.0。谢谢您的回答。研究这些主题:)如果有帮助,别忘了将这个答案标记为已接受,以便将来能帮助其他人@Điềnbaáquan如果我这么愚蠢,请原谅我,但我怎么能得到这些“统计数据”?:)@ĐiềnBáQuan平均值->也称为平均值。换句话说,将一行中的所有像素相加,除以宽度(一行中的像素数),得到一个介于0-255之间的值(如果有浮点或双精度,则为0-1.0),白色水平线的值应接近255(或1.0),因为大多数值都是白色的。非常感谢!我已经实现了我的目标。:)@ĐiềnBáQuan请不要在这里使用“愚蠢”一词:你正在做很好的图像处理工作。你绝对不傻。