RSS
 

Edge orientation

05 Dec

This is a sample code for getting the edges orientation in an image.

CvMat *filter_x=cvCreateMat(1,3,CV_32FC1); filter_x->data.fl[0]=-1;
filter_x->data.fl[1]=0; filter_x->data.fl[2]=1;
CvMat *filter_y=cvCreateMat(3,1,CV_32FC1); filter_y->data.fl[0]=-1;
filter_y->data.fl[1]=0; filter_y->data.fl[2]=1;
IplImage *img_src=cvLoadImage("name",0);
IplImage *img_diff_x=cvCreateImage(cvGetSize(img_src),IPL_DEPTH_32F,1);
IplImage *img_diff_y=cvCreateImage(cvGetSize(img_src),IPL_DEPTH_32F,1);
IplImage *img_32f=cvCreateImage(cvGetSize(img_src),IPL_DEPTH_32F,1);
cvConvert(img_src,img_32f);
cvFilter2D(img_32f,filter_x,img_diff_x);
cvFilter2D(img_32f,filter_y,img_diff_y);
IplImage *magnitude=cvCreateImage(cvGetSize(img_src),IPL_DEPTH_32F,1);
IplImage *orientation=cvCreateImage(cvGetSize(img_src),IPL_DEPTH_32F,1);
cvCartToPolar(img_diff_x, img_diff_y, magnitude, orientation, 1);

 
3 Comments

Posted in OpenCV

 

Leave a Reply

 

 
  1. Kristou Mehrez

    December 7, 2009 at 4:50 pm

    Thank you very much for some person I don’t know him. He sent me a chat message to correct my mistake with the matrix type miss spelling.

     
  2. rahul

    March 15, 2011 at 3:59 am

    cvFilter2D has problem dealing with img_diff_x. Raises an error of [b] error: cannot convert ‘IplImage*’ to ‘const CvMat*’ for argument ‘3’ to ‘void cvFilter2D(const CvArr*, CvArr*, const CvMat*, CvPoint)’ [/b]

     
  3. rahul

    March 15, 2011 at 11:49 am

    I assume according to cvFilter2D it should be cvFilter2D(IplImage *a, IplImage *b, CvMat *filter);