sobel导数

int  main(){

	 Mat  sar = imread("leap.jpg" , 1) ;
	 namedWindow("leap") ;
	 imshow("leap" , sar) ;
	 waitKey(0) ;

	 GaussianBlur(sar , sar , Size(3 , 3) , 0 , 0 , BORDER_DEFAULT) ;
	 namedWindow("gauss") ;
	 imshow("gauss" , sar) ;
	 waitKey(0) ;

	 Mat  sar_grad ;
	 cvtColor( sar , sar_grad , CV_RGB2GRAY )  ;
	 namedWindow("grad") ;
	 imshow("grad" , sar_grad) ;
	 waitKey(0) ; 

	 int scale = 1 , delta = 0  ,  ddepth = CV_16S ;
	 Mat grad_x , grad_y ;
	 Sobel( sar_grad , grad_x , ddepth , 1 , 0 , 3 , scale , delta , BORDER_DEFAULT) ;
	 Sobel( sar_grad , grad_y , ddepth , 0 , 1 , 3 , scale , delta , BORDER_DEFAULT) ;

	 Mat abs_grad_x , abs_grad_y ;
	 convertScaleAbs( grad_x , abs_grad_x) ;
	 convertScaleAbs( grad_y , abs_grad_y) ;

	 Mat ans ;
	 addWeighted( abs_grad_x , 0.5 , abs_grad_y , 0.5 , 0 , ans) ;
	 namedWindow("soble") ;
	 imshow("soble" , ans) ;
	 waitKey(0)  ;  

	 cout<< ans.rows<< "  " << ans.cols << endl ; 

	 //freopen("data.txt" , "w" , stdout) ; 
	 int  n = 0 ;
	 for(int i = 0 ; i < ans.rows ; i++){
		 for(int j = 0 ; j < ans.cols ; j++) {
			 if( ans.at<uchar>(i , j)  != 0 ) n++ ;
		 }
	 }
	 cout<< n << endl ; 

	 system("pause") ; 

	 return  0 ; 
}
sobel导数_第1张图片






你可能感兴趣的:(sobel导数)