最終更新: mikk_ni3_92 2010年02月13日(土) 16:09:30履歴
現在地 >> メニュー >> OpenCV >> sequence編02 >> sequence編02::まとめ2
#include <iostream> #include <cv.h> #include <highgui.h> #pragma comment(lib,"cv200.lib") #pragma comment(lib,"cxcore200.lib") #pragma comment(lib,"highgui200.lib") const char *filename = "testimg.png"; int main() { IplImage *imgA = cvLoadImage(filename,0); if(imgA ==NULL ) { std::cerr << "Can't load image\n"; return -1; } cvCanny(imgA,imgA,50,200,3); //メモリストレージとシーケンスを用意 CvMemStorage* storage = cvCreateMemStorage(0); CvSeq* lines = 0; //ハフ変換による直線の検出(確率的) lines = cvHoughLines2( imgA,storage,CV_HOUGH_PROBABILISTIC,1,CV_PI/180,80,30,10 ); IplImage *imgA_out = cvCreateImage(cvGetSize(imgA),IPL_DEPTH_8U,3); cvCvtColor(imgA,imgA_out,CV_GRAY2RGB);//直線描画用 CvPoint *line; for(int loop = 0; loop < MIN(lines->total,100);++loop) { line = reinterpret_cast<CvPoint *>( cvGetSeqElem(lines,loop) ); cvLine(imgA_out, line[0], line[1], CV_RGB(255,0,0), 3, 8 ); } cvNamedWindow("CV_HOUGH_PROBABILISTIC"); cvShowImage("CV_HOUGH_PROBABILISTIC",imgA_out); cvWaitKey(); cvReleaseImage(&imgA); cvReleaseImage(&imgA_out); cvReleaseMemStorage( &storage ); //cvReleaseImageなどと同じようなもの cvDestroyAllWindows(); return 0; }