首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AForge,ColorTracking多个对象

AForge,ColorTracking多个对象
EN

Stack Overflow用户
提问于 2014-02-22 04:28:05
回答 1查看 997关注 0票数 0

我目前正在我的WebCam上通过颜色跟踪对象,我已经走到了这一步,但我想添加一个选项来绘制多个对象。到目前为止,它只在最大的对象周围绘制一个矩形。

代码语言:javascript
复制
BlobCounter blobcounter = new BlobCounter();
blobcounter.MinHeight = 100;
blobcounter.MinWidth = 100;
blobcounter.ObjectsOrder = ObjectsOrder.Size;
blobcounter.ProcessImage(grayImage);
Rectangle[] rects = blobcounter.GetObjectsRectangles();

if (checkBox1.Checked == false)
{
    if (rects.Length > 0)
    {
        Rectangle objectRect1 = rects[0];
        Graphics g = Graphics.FromImage(video);
        using (Pen pen = new Pen(Color.LightGreen, 3))
        {
            g.DrawRectangle(pen, objectRect1);
            PointF drawPoin = new PointF(objectRect1.X, objectRect1.Y);
            int objectX = objectRect1.X + objectRect1.Width / 2 - video.Width / 2;
            int objectY = video.Height / 2 - (objectRect1.Y + objectRect1.Height / 2);
            PointF drawPoin2 = new PointF(objectRect1.X, objectRect1.Y + objectRect1.Height + 4);
            String Blobinformation = "X= " + objectX.ToString() + "  Y= " + objectY.ToString() + "\nSize=" + objectRect1.Width + ", " + objectRect1.Height;
            g.DrawString(Blobinformation, new Font("Arial", 12), new SolidBrush(Color.LightSkyBlue), drawPoin2);
        }
        g.Dispose();
    }
}
else
{
 ??????????
}
EN

回答 1

Stack Overflow用户

发布于 2014-02-22 04:43:16

添加一个简单的foreach循环应该就足够了。我不知道绘图的效率有多高,但我几乎可以肯定几个矩形不会有问题。

代码语言:javascript
复制
else
{
    if (rects.Length > 0)
    {
        foreach (Rectangle objectRect in rects)
        {
            Graphics g = Graphics.FromImage(video);
            using (Pen pen = new Pen(Color.LightGreen, 3))
            {
                g.DrawRectangle(pen, objectRect);
                PointF drawPoin = new PointF(objectRect.X, objectRect.Y);
                int objectX = objectRect.X + objectRect.Width / 2 - video.Width / 2;
                int objectY = video.Height / 2 - (objectRect.Y + objectRect.Height / 2);
                PointF drawPoin2 = new PointF(objectRect.X, objectRect.Y + objectRect.Height + 4);
                String Blobinformation = "X= " + objectX.ToString() + "  Y= " + objectY.ToString() + "\nSize=" + objectRect.Width + ", " + objectRect.Height;
                g.DrawString(Blobinformation, new Font("Arial", 12), new SolidBrush(Color.LightSkyBlue), drawPoin2);
            }
            g.Dispose();
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21944498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档