emguCV得到最大的斑点



我正在做颜色跟踪。我正在追踪一个橙色的球,也许是一个篮球,伴随着身体的kinect,我正在制作一个罚球指南。这是我的案例

我已经对我的图像进行了阈值化,对其进行了侵蚀以去除噪声和其他不重要的物体(非球),然后扩大了几次以强调球。所以我得到了一个最终的二值图像——我成功地把球分离出来了。还有其他的斑点……(不是球的小斑点)…我如何得到最大的一团(球)并放置一个边界框?

我试过绕圈,但这是非常缓慢的,,…谢谢!有些代码会很有用

这是我用来获取图像中最大斑点的代码:

public static Blob FindLargestObject(Image<Gray, byte> block, Rectangle rectangle)
    {
        Image<Gray, byte> mask = block.CopyBlank();
        Contour<Point> largestContour = null;
        double largestarea = 0;
        for (var contours = block.FindContours(CHAIN_APPROX_METHOD.CV_CHAIN_APPROX_SIMPLE,
            RETR_TYPE.CV_RETR_EXTERNAL); contours != null; contours = contours.HNext)
        {
            if (contours.Area > largestarea)
            {
                largestarea = contours.Area;
                largestContour = contours;
            }
        }
        // fill the largest contour
        mask.Draw(largestContour, new Gray(255), -1);
        return new Blob(mask, largestContour, rectangle);
    }
为Blob:

public class Blob 
{
    Image<Gray,byte> Mask{ get; set; }
    Contour<Point> Contour { get; set; }
    Rectangle Rectangle { get; set; }
}

blob将包含您想要获取的所有信息。

相关内容

  • 没有找到相关文章

最新更新