我想用椭圆形表示斑点。
我已经在opencv中使用mouseReleaseEvent
实现了这一目标。但是我在考虑实时应用轮廓或斑点检测器,它们会表现更好。
findContours()
“模糊”也扩展了斑点的边界,这不是必需的。
输入图像
输出图像
答案 0 :(得分:0)
轮廓是对象的轮廓,blob detector是findContours
之上的算法。斑点检测器不仅可以找到边界,还可以计算中心以及它是否与您定义的某些形状和大小匹配。它比findContours
更为沉重,如果您关心性能并且不需要这些功能,则不要使用它。
如果要保持图像二进制且不扩展轮廓,则可以使用中间模糊而不是高斯模糊。您也可以使用dilate/erode/open/close operations及其组合对二进制图像进行降噪。这些方法在二进制图像上相对可比,您可以测试最佳性能和结果,然后为您的任务选择一种。
Tutorial code here描述了如何用椭圆表示找到的轮廓。 cv::fitEllipse
用于为轮廓创建椭圆。然后,您可以使用cv::ellipse
绘图功能来显示它。