昨天做了什麼
試用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;
}
沒有留言:
張貼留言