エッジ検出
OpenCVを用いてエッジ検出を行ってみます。
エッジ検出を行うアルゴリズムは色々ありますが、今回はCannyアルゴリズムを使ってみました。
/* threshold1 と threshold2 のうち小さいほうがエッジ同士を接続するために用いられ, 大きいほうが強いエッジの初期検出に用いられる. */ void cvCanny( const CvArr* image, CvArr* edges, double threshold1, double threshold2, int aperture_size=3 );
#include <cv.h> #include <highgui.h> int main (int argc, char **argv) { int x, y; unsigned char p[3]; IplImage *img, *img2; if (argc != 2 || (img = cvLoadImage (argv[1], CV_LOAD_IMAGE_GRAYSCALE)) == 0){ return -1; } img2 = cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1); cvCanny(img,img2,50.0,200.0); cvNamedWindow ("Image", CV_WINDOW_AUTOSIZE); cvShowImage ("Image", img2); cvWaitKey (0); cvDestroyWindow ("Image"); cvSaveImage("edge.jpg",img); cvReleaseImage (&img); return 0; }