/ / メモ
2009-11-26

OpenCV の記事のサンプルが動く程度に変換した。
- cv.d
- cvtypes.d
- cxcore.d
- cxtypes.d
- highgui.d

OpenCVで学ぶ画像認識:第3回 オブジェクト検出してみよう|gihyo.jp … 技術評論社

module sample;

pragma(lib,"cv200.lib");
pragma(lib,"cxcore200.lib");
pragma(lib,"highgui200.lib");

private import opencv.c.cxcore;
private import opencv.c.highgui;
private import opencv.c.cvtypes;
private import opencv.c.cv;

private import std.string;

void main()
{
    /* 画像のロード */
    string imgfile = "photo.jpg";
    IplImage* image = cvLoadImage(toStringz(imgfile),1);

    /* 正面顔検出器のロード */
    CvHaarClassifierCascade* cascade = cast(CvHaarClassifierCascade*)cvLoad( "haarcascade_frontalface_default.xml" );

    CvMemStorage* storage = cvCreateMemStorage(0);
    CvSeq* faces;

    /* 顔検出 */
    faces = cvHaarDetectObjects(image,cascade,storage);

    /* 顔領域の描画 */
    for(int i = 0;i < faces.total; i++)
    {
        /* extract the rectanlges only */
        CvRect face_rect = *cast(CvRect*)cvGetSeqElem(faces,i);
        cvRectangle(image,cvPoint(face_rect.x,face_rect.y),
                    cvPoint((face_rect.x+face_rect.width),
                            (face_rect.y+face_rect.height)),
                    CV_RGB(255,0,0),3);
    }

    /* 画像の表示 */
    cvReleaseMemStorage(&storage);
    cvNamedWindow("face_detect",0);
    cvShowImage("face_detect",image);
    cvWaitKey(0);
    cvReleaseHaarClassifierCascade(&cascade);
    cvReleaseImage(&image);

}

トラックバック http://mikanya.dip.jp/memo/2009-11-26-1