如何用椭圆有效地表示二进制图像中的斑点? | OpenCV的

时间:2019-04-03 14:15:04

标签: c++ opencv blob ellipse

我想用椭圆形表示斑点。

我已经在opencv中使用mouseReleaseEvent实现了这一目标。但是我在考虑实时应用轮廓或斑点检测器,它们会表现更好。

findContours()

“模糊”也扩展了斑点的边界,这不是必需的。

输入图像

Input image

输出图像

Output image

1 个答案:

答案 0 :(得分:0)

轮廓是对象的轮廓,blob detectorfindContours之上的算法。斑点检测器不仅可以找到边界,还可以计算中心以及它是否与您定义的某些形状和大小匹配。它比findContours更为沉重,如果您关心性能并且不需要这些功能,则不要使用它。

如果要保持图像二进制且不扩展轮廓,则可以使用中间模糊而不是高斯模糊。您也可以使用dilate/erode/open/close operations及其组合对二进制图像进行降噪。这些方法在二进制图像上相对可比,您可以测试最佳性能和结果,然后为您的任务选择一种。

Tutorial code here描述了如何用椭圆表示找到的轮廓。 cv::fitEllipse用于为轮廓创建椭圆。然后,您可以使用cv::ellipse绘图功能来显示它。