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);
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.
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]
rahul
March 15, 2011 at 11:49 am
I assume according to cvFilter2D it should be cvFilter2D(IplImage *a, IplImage *b, CvMat *filter);