OpenCV 画像を読み込みグレースケールで表示する.
これは OpenCV 超初心者である私のメモです.
間違っている可能性がありますので注意してください.
OpenCV を使用して, 画像を読み込み, グレースケール表示するサンプルコードを以下に示す.
方法1
cvLoadImage 関数で画像を読み込む際に, フラグにCV_LOAD_IMAGE_GRAYSCALEを指定する.
/* header files */ #include <stdio.h> #include <stdlib.h> #include <cv.h> #include <highgui.h> /* main */ int main(void) { IplImage* image; /* 静止画像をグレースケールとして読み込む */ image = cvLoadImage("dede.jpg",CV_LOAD_IMAGE_GRAYSCALE); if (image == NULL) { fprintf(stderr, "読込みに失敗しました."); return EXIT_FAILURE; } /* ウインドウを準備して画像を表示する */ cvNamedWindow("Grayscale01",CV_WINDOW_AUTOSIZE); cvShowImage("Grayscale01",image); /* キー入力があるまで待つ */ cvWaitKey(0); /* これがないと、1瞬だけ表示されて終わる */ /* メモリを開放する */ cvReleaseImage(&image); /* ウィンドウを破棄する */ cvDestroyWindow("Grayscale01"); return EXIT_SUCCESS; }
方法2
読み込んだ画像をcvCvtColor 関数でグレースケールに変換する.
/* header files */ #include <stdio.h> #include <stdlib.h> #include <cv.h> #include <highgui.h> /* main */ int main(void) { IplImage *source; IplImage *gray; /* 静止画像を読み込む */ source = cvLoadImage("dede.jpg", CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR); if(source == NULL){ fprintf(stderr, "読込みに失敗しました."); return EXIT_FAILURE; } /* グレースケール画像用にメモリを確保 */ gray = cvCreateImage(cvGetSize(source), IPL_DEPTH_8U,1); /* カラー画像をグレースケールに変換 */ cvCvtColor(source,gray,CV_BGR2GRAY); /* ウインドウを準備して画像を表示する */ cvNamedWindow("Grayscale02",CV_WINDOW_AUTOSIZE); cvShowImage("Grayscale02",gray); /* キー入力があるまで待つ */ cvWaitKey(0); /* これがないと、1瞬だけ表示されて終わる */ /* メモリを開放する */ cvReleaseImage(&gray); /* ウィンドウを破棄する */ cvDestroyWindow("Grayscale02"); return EXIT_SUCCESS; }
実行結果
実行結果は以下のようになる.