01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
2009-11-26 Thu
■ OpenCV の記事のサンプルがコンパイルできるようになった [D言語][OpenCV]
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); }