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

実行結果

実行結果は以下のようになる.