1.是最一開始的視訊作業,因為那是最簡單也最容易的,也有很大的感觸,原來程式也可以很簡單但是卻很動人,雖然只是把視訊放在電腦上面,而後面的作業都要用到視訊鏡頭,非常的好玩可以看自己的畫面變來變去,出現很多不同的效果,也造成不少的笑料。
2.學到了麵包板其實不是這麼好接,也學到了程式必須一步一步慢慢寫,但是同學們都很幫忙,如果不會就去問,甚至老師,他們都會很願意教人,後面的視訊部分,也學到了程式由簡單到困難,有循序漸近的感覺,學起來也不會完全不了解,更重要的是更懂得google大神的好處。
3.從以前害怕程式變成會寫一點,對互動電子的了解,從無到有我想這是我最大的進步,也會去改正現有的程式,甚至能夠在特別熟練的地方幫助到同學,這感覺真的很特別。
2013年6月9日 星期日
期末上機考
題目:
中線左右各放一個皇冠,頭到左邊會戴上左邊的皇冠,到右邊則戴上右邊的皇冠。
中線左右各放一個皇冠,頭到左邊會戴上左邊的皇冠,到右邊則戴上右邊的皇冠。
一開始把中間的線畫出來,皇冠就相當於把圖片放上去~
考試的時候不會把皇冠放上去,再想可能是位子出了問題。
皇冠要怎麼跟著頭的移動改變位子,一開始想到是利用皮膚偵測的方式,去偵測黑色的頭髮,但最後也也不出來。
一開始皇冠的圖片放不上去,即便放上去了也是在不對的位置,後來請教同學後,才知道原來圖片放入的完整順序,然後我畫線的部分也是利用作業的程式碼改正成功的,最後請吳昊穎同學教我如何在左右邊出現黃冠。
這次的作業學到很多東西,雖然考試的時候有點緊張,甚至根本寫不出來,事後請教同學之後,了解了這次考試的問題在哪,錯在哪,對我有很大的幫助
考試的時候不會把皇冠放上去,再想可能是位子出了問題。
皇冠要怎麼跟著頭的移動改變位子,一開始想到是利用皮膚偵測的方式,去偵測黑色的頭髮,但最後也也不出來。
一開始皇冠的圖片放不上去,即便放上去了也是在不對的位置,後來請教同學後,才知道原來圖片放入的完整順序,然後我畫線的部分也是利用作業的程式碼改正成功的,最後請吳昊穎同學教我如何在左右邊出現黃冠。
這次的作業學到很多東西,雖然考試的時候有點緊張,甚至根本寫不出來,事後請教同學之後,了解了這次考試的問題在哪,錯在哪,對我有很大的幫助
//為圖片申請空間
mergeImg = cvCreateImage(cvSize(frame->width,frame->height), IPL_DEPTH_8U, 3);
pImg1 = cvCreateImage(cvSize(frame->width,frame->height), IPL_DEPTH_8U, 1);
cvNamedWindow("Webcam",0);
cvNamedWindow("Webcam1",0);
//讀取圖片檔案
p1 = cvLoadImage("Crown02.jpg");
p2 = cvLoadImage("Crown04.jpg");
//劃線
cvLine(mergeImg,cvPoint(150,0),cvPoint(150,255),CV_RGB(255,0,0),3,8,0);
int redPixelNumber=0;
int redPixelX=0;
int redPixelY=0;
//抓取膚色後變為白色
for (int y=0; y<pImg1->height; y++)
{
uchar* ptr1=(uchar*) (pImg1->imageData +y*pImg1->widthStep);
for (int x=0; x<pImg1->width; x++)
{
if(ptr1[x]==255)
{
redPixelNumber++;
redPixelX+=x;
redPixelY+=y;
}
}
}
//變白色之後找平均點為了要帶皇冠
if (redPixelNumber>0)
{
mouseX=redPixelX/redPixelNumber;
mouseY=redPixelY/redPixelNumber;
}
//將皇冠固定在頁面上
for (int y=0; y<crown01->height; y++)
{
//原圖
uchar* ptr1=(uchar*) (mergeImg->imageData +(y)*mergeImg->widthStep);//原本畫面
uchar* ptr2=(uchar*) (crown01->imageData +y*crown01->widthStep);// 皇冠 1
uchar* ptr3=(uchar*) (crown02->imageData +y*crown02->widthStep);// 皇冠 2
//寫入第一皇冠(左)
for (int x=0; x<crown01->width; x++)
{
if(ptr2[3*x]!=255)
{
ptr1[3*(x+20)]=ptr2[3*(x)];
ptr1[3*(x+20)+1]=ptr2[3*(x)+1];
ptr1[3*(x+20)+2]=ptr2[3*(x)+2];
}
}
//寫入第二皇冠(右)
for (int x=0; x<crown02->width; x++)
{
if(ptr2[3*x]!=255)
{
ptr1[3*(x+180)]=ptr3[3*(x)];
ptr1[3*(x+180)+1]=ptr3[3*(x)+1];
ptr1[3*(x+180)+2]=ptr3[3*(x)+2];
}
}
}
// 偵測第一個皇冠會在頭上
for (int y=0; y<crown01->height; y++)
{
uchar* ptr1=(uchar*) (mergeImg->imageData +(y+mouseY-170)*mergeImg->widthStep);
uchar* ptr2=(uchar*) (crown01->imageData + y*crown01->widthStep);
for (int x=0; x<crown01->width; x++)
{
if(mouseX <150)if(ptr2[3*x]!=255)
{
ptr1[3*(x+mouseX-60)]=ptr2[3*(x)] ;
ptr1[3*(x+mouseX-60)+1]=ptr2[3*(x)+1] ;
ptr1[3*(x+mouseX-60)+2]=ptr2[3*(x)+2] ;
}
}
}
//皇冠二如同
2013年6月8日 星期六
2013年5月27日 星期一
2013年5月5日 星期日
訂閱:
文章 (Atom)







