使用EmguCV中的Seq(T).Item属性查找轮廓索引

时间:2013-01-08 21:25:16

标签: c# image-processing contour emgucv

我是EmguCV的新手。我在我的应用程序中使用Emgu CV 2.4.2。我有一个问题是使用Seq(T).Item属性找到轮廓索引。当我在轮廓中使用该属性时,系统发送了如下错误消息:

Error 11 'Emgu.CV.Contour<System.Drawing.Point>' does not contain a definition for'Item' and no
extension method 'Item' accepting a first argument of type 'Emgu.CV.Contour<System.Drawing.Point>'
could be found (are you missing a using directive or an assembly reference?)    E:\TUGAS_AKHIR\headDetection\headDetection.cs   284 45  headDetection

我已阅读文档here,但我不知道为什么会出现错误。这是我的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using Emgu.CV;
using Emgu.CV.Structure;
using Emgu.CV.VideoSurveillance; 
using Emgu.CV.CvEnum; 
using Emgu.Util;
using Emgu.CV.Cvb;
using System.Collections;

//background subtraction 
...

//foreFrame is the result of background subtraction
 Contour<Point> contours = foreFrame.FindContours(
    CHAIN_APPROX_METHOD.CV_CHAIN_APPROX_SIMPLE,
    RETR_TYPE.CV_RETR_EXTERNAL);

while (contours != null)
{
    int idx = contours.Item; //THE ERROR MESSAGE APPEARS HERE
        Console.WriteLine("contour index = {0}", idx);

    //next contour
    contours = contours.HNext;
}//endwhile

请帮我看看如何使用Seq(T).Item属性或EmguCV中的其他方法找到轮廓索引。如果有人详细说明,我将非常感激。

提前致谢, 大卫:)

1 个答案:

答案 0 :(得分:1)

如果你看一下emgu 2.4.2 docs,你会发现Contour类上没有Item属性。

你可以做的最简单的事情是使用一个循环计数器来指示当前的计数器索引并在循环时递增它:

int counter = 0;
while (contours != null)
{
    Console.WriteLine("contour index = {0}", counter);
    //next contour
    contours = contours.HNext; 
    counter++;
}