2012年5月7日 星期一

98163082_劉冠捷, 座號53, HW10,

昨天做了什麼
試用artoolkit
圖卡辨識
今天要做什麼
用手指畫圖
打算用小畫家觀念加上手勢辨識的觀念
預期問題
小畫家觀念加上手勢辨識的觀念
可能會遇到程式碼的組合
譬如如何手型套用是小畫家的畫筆


小畫家
#include<opencv/highgui.h>
 #include<opencv/cv.h>
 IplImage * img;
 IplImage * frame;
 IplImage * combine;

 void mymouse(int event, int x, int y, int flag, void* param)
  {
     static int oldx, oldy, now_down=0;
     if(event==CV_EVENT_RBUTTONDOWN){  //滑鼠右鍵按下
      cvFloodFill(img, cvPoint(x,y), cvScalar(0,255,255));
   }
     if(event==CV_EVENT_LBUTTONDOWN){ 
      oldx=x;oldy=y;
      now_down=1;
   }
     if(event==CV_EVENT_LBUTTONUP){  
      now_down=0;
   }
     if(event==CV_EVENT_MOUSEMOVE && now_down==1){ 
      cvLine(img, cvPoint(x,y), cvPoint(oldx, oldy), cvScalar(255,0,0), 2); 
      oldx=x;oldy=y;
   }
     cvAdd(img, frame, combine, NULL);
     cvShowImage("小畫家", combine);
     cvShowImage("pen", img); 
  }


 int main()
  {
      CvCapture * cap = cvCreateCameraCapture(0);
      frame = cvQueryFrame(cap);

     img = cvCloneImage(frame);
      cvSet(img, cvScalar(0,0,0));
      combine = cvCloneImage(img);

     cvShowImage("小畫家", combine);
      cvSetMouseCallback("小畫家", mymouse);
      while(1){
     frame = cvQueryFrame(cap);
     cvShowImage("frame", frame);
 
    cvAdd(img, frame, combine, NULL);
     cvShowImage("小畫家", combine);
 
    int key=cvWaitKey(33);
     if(key==27)break;
    }
      cvReleaseCapture(&cap);
    return 0;
  }
-----------------------------------------------------------------------------------
手辨識
#include <opencv/cv.h>
#include <opencv/highgui.h>
int main()
{
 CvCapture * cap=cvCreateCameraCapture(0); //攝影機
 IplImage * frame=cvQueryFrame(cap);
 IplImage * img=cvCloneImage(frame);
 IplImage * grey=cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 1); //存灰階影像
 while(1)
 {
  frame=cvQueryFrame(cap);
  cvCopyImage(frame,img); //複製frame的影像到img
  cvCvtColor(img, img, CV_BGR2YCrCb);
  cvInRangeS(img, cvScalar(0,137,77), cvScalar(200,177,127),grey);
  cvShowImage("skin", grey); //show圖
  cvShowImage("frame",frame); //show圖
  int key = cvWaitKey(33);
  if(key==27)
  break;
 }
  cvReleaseCapture(&cap);
  return 0;
}

沒有留言:

張貼留言