gpt4 book ai didi

python - 如何使用 OpenCV 检测物体的边缘

转载 作者:太空宇宙 更新时间:2023-11-03 23:07:39 27 4
gpt4 key购买 nike

我正在尝试使用 OpenCV 来测量细丝(用于 3D 打印的塑料 Material )的尺寸

我想做的是测量细丝尺寸(用于 3D 打印的塑料 Material )。这个想法是我使用 LED 面板照亮灯丝,然后用相机拍摄图像,预处理图像,应用边缘检测并计算它的大小。大多数灯丝由一种颜色制成,易于预处理并获得良好的效果。

问题出在透明灯丝上。我无法获得有用的结果。我想寻求一点帮助,或者是否有人可以给我正确的方向。我已经尝试将图像裁剪到比灯丝高一点的高度,宽度只有几个像素,并使用这些图像中的像素数计算尺寸,但这效果不佳。所以现在我在这里并尝试通过边缘检测来做到这一点

  • 适用于单色灯丝
  • 不适用于透明灯丝

下面的代码对于普通灯丝工作得很好,问题是当我尝试将它用于透明灯丝时。我试过调整 Canny 函数的阈值。我尝试过不同的色彩空间。但我无法得到结果。

可能有助于理解的图片: https://imgur.com/gallery/CIv7fxY

image = cv.imread("../images/img_fil_2.PNG")  # load image

gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) # convert image to grayscale

edges = cv.Canny(gray, 100, 200) # detect edges of image

最佳答案

您可以假设图像是在相同条件下拍摄的。

您的主要问题是透明灯丝中的反射被检测为边缘。但是,由于图像相对简单,没有任何其他边缘,您可以简单地取上边缘和下边缘,并测量它们之间的距离。

一个简单的方法是取 2 条垂直线(例如图像边),找到与线相交的边缘(基本上遍历图像中的一列并找到边缘像素),并连接最高点和最低点形成灯丝的边缘。这也消除了灯丝中的曲率,我认为您的应用不需要它。

为了稳健,您可能需要使用 3 或 4 条垂直线。

关于python - 如何使用 OpenCV 检测物体的边缘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55910074/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com