1. ホーム
  2. OpenCV

OpenCV3.0 cvCvtColor 関数 グレースケール画像で遭遇した問題と解決策

2022-03-01 14:50:51

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を使うと、エラーになるのです。



3.0 What Have You Done 。


<スパン 該当するファイルを検索する


<スパン これはどういうことでしょうか?お気軽にコメントし、混乱を解消してください。

<スパン

その後、新しいセクションを ここで を見て、誰かがこの問題を抱えていることを発見し、まあ、私はBaidu(百度を使って失礼します)を介して行ったが、誰もこの問題を抱えていなかった。





それを受けて、コードを以下のように変更した。

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;
}




 正常に実行されました

<スパン 1日で解決しましたが、原因は不明です。


また、最初のコードは、rgbをhsvに変換すれば動作します。3.0ってふざけてるのか?