碰到的問題和解決:
1。在將圖像轉化成灰度的時候發生了錯誤,用的是cvCvtColor函數,但是出現了錯誤。
試過了幾遍都沒有效果,不過后來發現可能是通道的原因,改正之后,又與前面的有沖突,這個時候突然向導要先做一個判斷截取圖像大小的功能。所以剛好建立一個新的灰度圖像,通道設置為1,然后實現了將這個賦值過去的,得到大小合適,而且是灰度的圖像。
2.出現了不合適的type,原因是采用的參數不對,或者是前后的內容不一致。比如說在進行直方圖采樣的時候,參數傳遞是有講究的,如果不慎,容易出現錯誤。
3.MFC中出現錯誤。this指針只能用在當前類中,而在static函數中,如果出現就會報錯,很明顯的錯誤,java老師也講過,static是類變量,而this是針對于一個實例的。
4.結構體內容,特別是IplImage結構體有很大的作用,其中,height和width都一個重要的作用,還有,你要重新定義一個大小的話,用cvResize函數來實現,因為這個函數可以實現將目標圖像結構的指針轉化成你要得到的圖像。此時就可以將其轉化成灰度圖像。
1
if ((height>200)||(width>200))
2
{
3
IplImage *tmp = cvCreateImage(cvSize(200,200),IPL_DEPTH_8U,3);
4
cvResize(newImg, tmp, CV_INTER_LINEAR); //縮放源圖像到目標圖像
5
IplImage *greyImage = cvCreateImage(cvSize(tmp->width,tmp->height),IPL_DEPTH_8U,1);
6
cvCvtColor(tmp,greyImage,CV_BGR2GRAY);
7
cvSaveImage(outfilename,greyImage);
8
}
9
else
10
{
11
IplImage *greyImage = cvCreateImage(cvSize(newImg->width,newImg->height),IPL_DEPTH_8U,1);
12
cvCvtColor(newImg,greyImage,CV_BGR2GRAY);
13
cvSaveImage(outfilename,greyImage);
14
}
5.具體的參數,特別是那些定義的宏,是有特殊意義的。
一個樣例,本來生成的灰度圖片應該是bmp格式,無奈不支持,所以截圖來處理。
posted on 2009-12-19 20:49
deercoder 閱讀(5851)
評論(2) 編輯 收藏 引用 所屬分類:
OpenCV / OpenGL