2011-01-26 4 views
3

Я пробовал следовать алгоритму, но он не работает. Я не могу понять, в чем проблема. Может кто-нибудь мне помочь?Обнаружение открытого кулака и кулака

Where can I learn/find examples of gesture recognitions streamed from Kinect, using OpenCV?

Image<Gray, Byte> dest = new Image<Gray, Byte>(this.bitmap.Width, this.bitmap.Height); 

CvInvoke.cvThreshold(src, dest, 220, 300, Emgu.CV.CvEnum.THRESH.CV_THRESH_BINARY); 
Bitmap nem1 = new Bitmap(dest.Bitmap); 
this.bitmap = nem1; 

Graphics g = Graphics.FromImage(this.bitmap); 

using (MemStorage storage = new MemStorage()) //allocate storage for contour approximation 
{ 
    for (Contour<Point> contours = dest.FindContours(); 
     contours != null; 
     contours = contours.HNext) 
    { 
     g.DrawRectangle(new Pen(new SolidBrush(Color.Green)),contours.BoundingRectangle); 

     IntPtr seq = CvInvoke.cvConvexHull2(contours,storage.Ptr, Emgu.CV.CvEnum.ORIENTATION.CV_CLOCKWISE, 0); 
     IntPtr defects = CvInvoke.cvConvexityDefects(contours, seq, storage); 
     Seq<Point> tr= contours.GetConvexHull(Emgu.CV.CvEnum.ORIENTATION.CV_CLOCKWISE); 

     Seq<Emgu.CV.Structure.MCvConvexityDefect> te = contours.GetConvexityDefacts(storage, Emgu.CV.CvEnum.ORIENTATION.CV_CLOCKWISE); 
     g.DrawRectangle(new Pen(new SolidBrush(Color.Green)), tr.BoundingRectangle); 
    } 
} 

ответ

0

Не имея некоторые графические данные, трудно помочь (я также без надлежащего аппаратного обеспечения). Во всяком случае, я предлагаю вам две вещи:

  • , так как это графическая процедура, отлаживать все сохранять или показывать любые промежуточные стадии (порог, контуры, ConvexHull)
  • изменения в более простой подход. Например:
    1. применять порог (в результате 0/1 карты ваших рук)
    2. для каждой строки, подсчитывать 0/1 переходы
    3. тест максимальное количество переходов: то есть, если это выше 7 , руки открыты

Позвольте мне знать, если он работает :-)

Смежные вопросы