2010年6月20日 星期日
HW04: Color Detection
今天第一個作業是把黑色頭髮轉成紅頭髮
利用了距離公式D = sqrt((B-0)^2 + (G-0)^2 + (R-0)^2)
然後再用一個IF,和一個門檻值TH1,此值要可調整大小
if (D) < TH1) {
ptr2[3*x]= targetBlue;ptr2[3*x+1]=targetGreen;
ptr2[3*x+2]=targetRed;
}
頭髮變色了XD
下面這張圖是可以畫畫的
創造一個全白的圖,只要在門檻值之內的圖移動,就會畫上紅色
HW03: Pixel-Level Processing in OpenCV
這次的作業是以像素的層級來看的
用了兩個迴圈就能掃描一張圖
for (int y=0; y
uchar* ptr1=(uchar*) (frame->imageData +y*frame->widthStep);
uchar* ptr2=(uchar*) (frame2->imageData +y*frame2->widthStep);
for (int x=0; x
ptr2[3*x]=ptr1[3*x]; //抓藍色
ptr2[3*x+1]=0;
ptr2[3*x+2]=0;
}
}
由上得知,一個像素由三個元素組成,依序為BGR
一個畫面就像一個矩陣,存放著這些像素
下面是放一張圖片在上面,其中alpha常數是調整透明度
for (int y=0; y
uchar* ptr1=(uchar*) (logoImg->imageData +y*logoImg->widthStep);
uchar* ptr2=(uchar*) (frame5->imageData +(y+y1)*frame5->widthStep);
for (int x=0; x
ptr2[3*(x+x1)]=alpha*ptr1[3*(x+x1)] + (1-alpha)*ptr2[3*(x+x1)];
ptr2[3*(x+x1)+1]=alpha*ptr1[3*(x+x1)+1] + (1-alpha)*ptr2[3*(x+x1)+1];
ptr2[3*(x+x1)+2]=alpha*ptr1[3*(x+x1)+2] + (1-alpha)*ptr2[3*(x+x1)+2];
}
}
2010年6月13日 星期日
課程回顧
一、學到什麼:
這堂課是我目前大二上過最有趣的課程,可以做視訊的各種處理
這堂課使用了openCV,來處理視訊以及圖片
其實以電腦角度來看,視訊只是很多圖片在跑而已!
課程一開始比較簡單,如何創建視訊,以及其他設定
後來比較進階,判斷東西有沒有移動、偵測顏色、顏色處理
還有專題作業,令人印象深刻
老師把課移出來讓大家展示專題讓大家參觀
讓我了解大家都在做甚麼,有些組別還做的不錯
二、最喜歡的作業:
跳跳樂這個作業
結合了各種視訊技巧,又可以拿來玩
三、建議:
我建議老師下個學期要繼續開課!
我非常喜歡老師的上課方式以及老師認真的態度
這堂課是我目前大二上過最有趣的課程,可以做視訊的各種處理
這堂課使用了openCV,來處理視訊以及圖片
其實以電腦角度來看,視訊只是很多圖片在跑而已!
課程一開始比較簡單,如何創建視訊,以及其他設定
後來比較進階,判斷東西有沒有移動、偵測顏色、顏色處理
還有專題作業,令人印象深刻
老師把課移出來讓大家展示專題讓大家參觀
讓我了解大家都在做甚麼,有些組別還做的不錯
二、最喜歡的作業:
跳跳樂這個作業
結合了各種視訊技巧,又可以拿來玩
三、建議:
我建議老師下個學期要繼續開課!
我非常喜歡老師的上課方式以及老師認真的態度
2010年5月2日 星期日
期中專題-出氣遊戲
組員:簡旭璋 、 劉健宏
動機:在這個充滿囧境的社會,大家是否曾經想找個人痛狠的毒打一頓,
但又因為道德及法律的限制而無法去實現,這時因為時代的進步,
所衍生出的一種教視訊處理的技術來讓我們開發出這既能毫無顧慮的打人出氣,
又不會牽涉到犯罪的遊戲,而就在這環境下,進而推動我們製作的動力。
遊戲介紹:開始先決定你想使用的工具,並在指定時間內將工具對準到指定框框好判別,
在判別完後會出現出氣對象 ,玩家可在這時拿起所判別之物品去攻擊出氣對象,
當對象被物品擊中時,會慘生悲鳴並出現反應,讓玩家出一口氣,解悶救台灣。
遇到的困難:
困難1: 圖片的出現會覆蓋感應區,使感應區無法感應而無法出現動作。
解決辦法 : 將感應線擴展到比圖片大一點點的地方,類似邊線的感覺,
這樣一來就不會發生覆蓋問題。
困難2: 無法讓她隨機出現。
解決辦法 : 把聲音亂路在一起...造成複雜感
2010年3月28日 星期日
2010年3月26日 星期五
HW2
這次的課程是由圖片的層次來處理
利用不同的 method 可以變出不同的顏色
HW2執行的結果
使用 cvCvtColor 把彩色轉灰階(右下角圖)
使用 cvThreshold 把灰階的圖再轉成黑白(左下角圖)
使用 cvThreshold 把彩色的圖做處理,顏色就會變很怪(左上角圖)
使用 cvCanny 把灰階的圖做邊緣化處裡(右上角圖)
在使用 cvCreateImage 為圖像申請空間時,灰階、黑白、灰階緣化處裡
的最後一個參數都要為1
利用不同的 method 可以變出不同的顏色
HW2執行的結果
使用 cvThreshold 把灰階的圖再轉成黑白(左下角圖)
使用 cvThreshold 把彩色的圖做處理,顏色就會變很怪(左上角圖)
使用 cvCanny 把灰階的圖做邊緣化處裡(右上角圖)
在使用 cvCreateImage 為圖像申請空間時,灰階、黑白、灰階緣化處裡
的最後一個參數都要為1
把圖片改成視訊輸出
如畫面顛倒 要用 cvFlip 來轉正
使用 cvResize(src, dest, CV_INTER_LINEAR) 設置畫面大小
下圖為放大 3.14 倍
2010年2月28日 星期日
HW01: Capture video from WebCam
這堂課是開學以來上第二次了,老師的上課方式是屬於開放式的,都要先自己去摸索,TRY AND ERROR。
課堂中看了一個影片,還蠻酷炫的,這個概念真不錯。
作業一是用老師寫好的CODE用Dev-C++來執行,之後擷取下來存成檔案。
原本要做的冗長設定才能正常執行,助教都幫我們設定好了,真是棒!
裡面程式碼不長,但是有很多FUNCTION都不懂,那這就要從網路上找資料來看了。
顯示全螢幕: cvNamedWindow("Webcam",1) 把1改成0就好了
cvWaitKey(20) 設定延遲多少毫秒
鏡射Code
int main()
{
CvCapture *capture;
IplImage *frame;
IplImage *frame1; //創一個frame1
capture=cvCreateCameraCapture( 0 );
cvNamedWindow("Webcam",1);
cvNamedWindow("Webcam1",1); //
while(1)
{
frame = cvQueryFrame(capture);
frame1 = cvQueryFrame(capture); //創一個放frame1的視窗
cvShowImage("Webcam", frame);
cvFlip(frame, frame1,1); //鏡射 1為水平翻轉 0為垂直翻轉 -1為水平+垂直翻轉
cvShowImage("Webcam1", frame);
cvWaitKey(20);
}
cvReleaseCapture(&capture);
cvDestroyWindow("Webcam");
cvDestroyWindow("Webcam1");
}
訂閱:
文章 (Atom)







