【问题标题】:emguCV getting the largest blobemguCV 获得最大的 blob
【发布时间】:2013-03-02 17:15:36
【问题描述】:

我正在研究颜色跟踪.. 我正在专门跟踪一个橙色球,也许是一个篮球球,以及用于身体的 kinect,我正在制作一个罚球投篮指南。 这是我的情况

我已经对我的图像进行了阈值处理,对其进行了侵蚀以消除噪音和其他无关紧要的物体(非球),然后放大了几次以强调球.. 所以我得到了最终的二进制图像 - 我已经成功隔离了球..还有其他斑点..(不是球的较小斑点)..我如何获得最大的斑点(球) 并放置一个边界框?

顺便说一句,我已经尝试过 hough circles,但是这很慢,,..谢谢!一些代码会很有用

【问题讨论】:

  • 您可以发布一些代码吗?那会很有帮助!

标签: opencv blob tracking emgucv threshold


【解决方案1】:

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

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 将包含您想要获取的所有信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-13
    • 1970-01-01
    • 2016-02-22
    • 2018-10-02
    • 1970-01-01
    • 1970-01-01
    • 2022-12-19
    • 2016-04-04
    相关资源
    最近更新 更多