2011年4月16日 星期六

[OpenCV] cvSobel

//拿到一張圖,可以先做個訊號過濾 太低的拿掉

double dou;
double threshold=110;
double maxvalue=255;
dou=cvThreshold(img,img,threshold,maxvalue,CV_THRESH_TOZERO);

//接著轉灰階,後開始找邊緣 用sobel 可以調兩個方向的階數。 

cvCvtColor(img,gray,CV_RGB2GRAY); 

IplImage *gray16u=cvCreateImage(cvGetSize(gray),IPL_DEPTH_16S,1); 
cvSobel(gray,gray16u,1,0,3);   
//如果輸入的是8位元的說,輸出防止溢出的現象 //所以開16位元的給它存

cvConvertScaleAbs(gray16u,gray,1,0); 
 //這個是再把16位元的縮回8位元的指令 //也可以用cvConvertScale

cvShowImage( "Example1", gray );
cvWaitKey(0);