天天看點

OpenCV3.0下 cvCvtColor函數灰階化圖像遇到問題及解決辦法

灰階圖像在1.0下我們可以這麼寫:

int main(int argc, char* argv[])
{
	IplImage* src = cvLoadImage("lampard.jpg",1);
	IplImage* gimg =0; 
	gimg =cvCreateImage(cvGetSize(src),src->depth,1);
	cvNamedWindow("showImage");
	cvCvtColor(src,gimg,11);
	cvSaveImage("1.jpg",gimg);
	cvShowImage("showImage",gimg);
	cvWaitKey(0);
	cvReleaseImage(&src);
	cvDestroyWindow("showImage");
	return 0;
}
           

但是在3.0下,你要是這樣用cvCvtColor的話,就會出錯:

OpenCV3.0下 cvCvtColor函數灰階化圖像遇到問題及解決辦法

3.0你幹了什麼。。。。

找到相應檔案

OpenCV3.0下 cvCvtColor函數灰階化圖像遇到問題及解決辦法

哪位大神解釋下啥意思?歡迎評論,解惑。

後來我在這裡,發現有人也遇到這個問題,嗯,我翻遍了百度(請原諒我用百度),都沒有人遇到這個問題。

OpenCV3.0下 cvCvtColor函數灰階化圖像遇到問題及解決辦法

就這樣,我照葫蘆畫瓢改了代碼如下:

int main(int argc, char* argv[])
{
	Mat m = imread("2.jpg", CV_LOAD_IMAGE_COLOR);
	IplImage src(m);
	cvNamedWindow("showImage");
	IplImage* gimg = cvCreateImage(cvGetSize(&src), 8, 1);
	cvCvtColor(&src, gimg, CV_BGR2GRAY);
	cvSaveImage("1.jpg", gimg);
	cvShowImage("showImage", gimg);
	cvWaitKey(0);
	cvReleaseImage(&gimg);
	cvDestroyWindow("showImage");
	return 0;
}
           

 成功運作!

一天時間解決了問題,但是不知道原因是啥。。。。

另外,第一段代碼要是,rgb轉hsv的話,也能運作。。。。3.0你在逗我麼?