如何使用OpenCV检测对象的边缘

时间:2019-04-29 20:03:03

标签: python opencv computer-vision

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

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

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

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

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

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

routes.yaml

1 个答案:

答案 0 :(得分:0)

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

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

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

您可能需要使用3或4条垂直线,以提高鲁棒性。