2011-01-26 71 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

沒有遇到一些圖形數據很難幫助(我也沒有適當的硬件)。無論如何,我建議你兩兩件事:

  • ,因爲它是,調試都保存或顯示任何中間步驟(閾值,輪廓,凸形輪廓)
  • 改變一個簡單的方法圖形程序。例如:
    1. 應用閾值(導致0/1的地圖你的手)
    2. 的每一行,算上0/1過渡
    3. 測試過渡的最大數量:即,如果是上述7 ,雙手打開

讓我知道,如果它:-)