顯示具有 99160884_葉伊婷 標籤的文章。 顯示所有文章
顯示具有 99160884_葉伊婷 標籤的文章。 顯示所有文章

2013年1月5日 星期六

期末project,第四組


題目:視訊小畫家
簡介:一般視訊較為乏味,邊視訊邊畫小畫家,可以增添許多趣味性,功能是滑鼠左鍵畫筆,滑鼠右鍵是填滿。
程式碼介紹:

#include<highgui.h>
#include<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,255,255), 5);
oldx=x;oldy=y;//line畫線、point抓取滑鼠移動的座標
}
cvAdd(img, frame, combine, NULL);
cvShowImage("小畫家", combine);
cvShowImage("pen", img);
}
int main()
{
CvCapture * cap = cvCreateCameraCapture(0);//抓取視訊
frame = cvQueryFrame(cap);
img = cvCloneImage(frame);//clone(frame)將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;
}

未來發展:未來可以加上偵測手指可直接使用手指繪畫,畫筆可換顏色、粗細......等,且可以加入文字方塊之類的,這樣就可以變得更有趣




DEMO影片



2012年11月22日 星期四

期末project構想,第4組

娃娃換配件

像小時候幫紙娃娃換衣服一樣,開始是一張圖,
之後可以幫紙娃娃換配件,例如帽子、蝴蝶結、眼鏡等等

2012年11月10日 星期六

作業2-3,第4組


 原始圖
帽子圖
膚色偵測
cvCvtColor(src, src_copy, CV_BGR2YCrCb); 膚色偵測是將影像轉為ycrcb 
cvInRangeS(src_copy, cvScalar(0,134,97), cvScalar(255,176,142), src_p); 抓顏色範圍值


戴帽子圖
CvRect rect = cvRect(150,0,360,360); 
150.0是圖的位置,360.360則是圖片原本的大小


2012年10月25日 星期四

作業2-2:第四組

Input:
 Output:

首先取得蘋果的顏色"紅色",找出所需要的顏色範圍然後擷取出來<(0,0,150)~(120,120,300)>,然後所選取顏色的部分就會是白色,而其餘的地方就會顯示為黑色。