2013年6月20日 星期四
課程回顧
1. What is your favorite homework?
應該是第一個作業因為是第一次接觸視訊處理感覺很新奇
而且比較簡單
2. What did you learn in this course?
有關openCV的函數
它的使用方法跟涵義
如何做出一份視訊處理作業
遇到困難該如何解決
3. What did you change after this course?
除了得到視訊處理的相關知識
和系上的人有了不一樣的互動
也認識了新的朋友
HW04
融入背景真的好累我試過各種背景
各種角度
如果敏感度太高臉也會被計算成白色
太低衣服也無法感應成白色
原本想用白色變白色
但這樣臉常常會變白
所以只好用奇怪的藍綠色了
下面是會移動的logo
懶懶熊從上移動到下
2013年6月6日 星期四
2013年5月16日 星期四
2013年5月2日 星期四
2013年3月12日 星期二
HW03
這次要做的作業是在視訊上加上相框,因為不知道怎麼調整大小所以直接在小畫家調整了。
課堂練習是將一個圖案或視訊轉成藍色綠色或紅色主要程式如下
for (int y=0; y<pImg->height; y++)
{
uchar* ptr1=(uchar*) (pImg->imageData +y*pImg->widthStep);
uchar* ptr2=(uchar*) (bImg->imageData +y*bImg->widthStep);
for
(int x=0; x<pImg->width; x++) {
ptr2[3*x]=ptr1[3*x];
ptr2[3*x+1]=0;
ptr2[3*x+2]=0;
}
}
今天的作業是把視訊加上相框不過我大小沒有調整好
if( (logoImg->height + y1) <
mergeImg->height) {
mergeImg=cvCloneImage(pImg);
for
(int y=0; y<logoImg->height; y++) {
uchar* ptr1=(uchar*) (logoImg->imageData
+y*logoImg->widthStep);
uchar* ptr2=(uchar*)
(mergeImg->imageData +(y+y1)*mergeImg->widthStep);
for (int x=0;
x<logoImg->width; x++) {
//在這裡加上if去除中間白色的部分
if(ptr1[3*x]<250&&ptr1[3*x+1]<250&&ptr1[3*x+2]<250){
ptr2[3*(x)]=alpha*ptr1[3*(x)] + (1-alpha)*ptr2[3*(x)];
ptr2[3*(x)+1]=alpha*ptr1[3*(x)+1] +
(1-alpha)*ptr2[3*(x)+1];
ptr2[3*(x)+2]=alpha*ptr1[3*(x)+2] + (1-alpha)*ptr2[3*(x)+2]; }
}
}
}
2013年3月1日 星期五
HW02
這次的作業是將彩色的視訊影像改成灰階、黑白和邊緣偵測。比起上一次的作業又更複雜了。
首先先命名四個視窗
其他影像參數都設的和原影像參數一樣大nchannels 都設為1(灰階)
如果將影像參數放進While記憶體會超載會當機。
在While裡面放入轉換程式
cvCvtColor彩色轉灰階、cvThreshold灰階轉黑白、cvCanny灰階轉邊緣偵測
在show出記憶體這個時候cvWaitKey如果為零的話就只會顯是短暫的執行畫面
所以要改成別的數字
然後最後在Destroy和Release這四個視窗就完成了。
另外cvResize這個function是改變視窗大小。cvResize(來源,目標,
插值方法)
CV_INTER_NN - 最近邻插值,
CV_INTER_LINEAR
- 双線性插值 (缺省使用)
CV_INTER_AREA
- 使用象素关系重采样。当图像缩小时候,该方法可以避免波纹出现。当图像放大时,类似于 CV_INTER_NN 方法..
CV_INTER_CUBIC
- 立方插值.
還要改變cvResize的寬和高
dst_cvsize.width=(int)(scr->width*0.5);
dst_cvsize.height=(int)(scr->height*0.5);
這表示目標的寬和高都比來源小0.5倍。
cvDilate() 表示膨脹function: cvDilate(來源,目標,element若為Null則為3*3長方形結構,interation=膨脹次方)。
cvErode()表示腐蝕function呼叫和cvDilate一樣。
2013年2月22日 星期五
HW01
CvCapture
一個獲取視頻的抽象接口結構。你可以理解為它能連接攝像頭,然後你想讓攝像頭做什麼,都要用函數調用,它作為參數起到控製攝像頭的作用
IplImage
由於OpenCV主要針對的是計算機視覺方面的處理,因此在函數庫中,最重要的結構體是IplImage結構。 IplImage結構來源於Intel的另外一個函數庫Intel Image Processing Library (IPL),該函數庫主要是針對圖像處理。
這一次的作業主要是要使用cvFlip將一個影像分別產生左右顛倒上下顛倒的四個影像。
首先要先產生4個影像視窗
我的做法是增加名稱Webcam1、 Webcam2、 Webcam3並寫在cvNamedWindow("Webcam",1);下面
像是
cvNamedWindow("Webcam",1);
cvNamedWindow("Webcam1",1);
cvNamedWindow("Webcam2",1);
cvNamedWindow("Webcam3",1);
接著使用cvFlip在來源參數上寫上frame,第二個參數可以寫來源參數或NULL,翻轉數我只用到等於1左右顛倒等於0上下顛倒
像是cvFlip(frame,NULL ,1);表示左右顛倒
我寫了三個cvFlip得到以上的結果
訂閱:
文章 (Atom)



