2012年5月7日 星期一

98163012_邱舒曼, 座號48, HW10,

昨天做了甚麼 查詢以下資料 cvNamedWindow 創建視窗 int cvNamedWindow( const char* name, int flags=CV_WINDOW_AUTOSIZE ); name 視窗的名字, 它被用來區分不同的視窗,並被顯示為視窗標題。 flags 視窗屬性標誌, 為1時表示會根據圖像自動調整視窗大小。 目前唯一支持的標誌是CV_WINDOW_AUTOSIZE。當這個標誌被設置後, 用戶不能手動改變視窗大小, 視窗大小會自動調整以適合被顯示圖像(參考cvShowImage)。 函數cvNamedWindow創建一個可以放置圖像和trackbar的視窗。 被創建的視窗可以通過它們的名字被引用。 如果已經存在這個名字的視窗,這個函數將不做任何事情。 今天要做甚麼? 詳讀並理解程式碼 並詢問老師問題 進而做好視訊畫面 和一個矩行用來判別矩行內的顏色 會遇到甚麼問題? 一開始矩形無法順利架出 但是後來有解決的 要問老師要怎麼判別顏色 現在一點一滴的製作當中要更加努力才行!! 解決:
============ 想要知道視訊中某點顏色 (只要給定 i(高度) 跟 j(寬度)) for(int i=0;i<img->height;i++){ unsigned char *ptr=img->imageData + img->widthStep * i; for(int j=0;j<img->width;j++){ int b=ptr[j*3]; int g=ptr[j*3+1]; int r=ptr[j*3+2]; } } 簡化的結果: unsigned char *ptr=img->imageData + img->widthStep*i; int b=ptr[j*3]; int g=ptr[j*3+1]; int r=ptr[j*3+2]; (第45頁的作法) (第43頁的作法) CvScalar color = cvGet2D(img, i, j);//建議 (第41頁的作法) unsigned char r=CV_MAT_ELEM(image, unsigned char, i, j); double g=CV_MAT_ELEM(image, double, i, j);//怪怪的 double b=CV_MAT_ELEM(image, double, i, j);//怪怪的 對話結束

沒有留言:

張貼留言