#include <opencv2\opencv.hpp>
#include <stdio.h>
#include<highgui.h>
int main(int argc, char* argv[])
{
IplImage *src=cvLoadImage("1.jpg");
IplImage *s=cvCreateImage(cvGetSize(src),8,1);
//源图像为8位,为了避免溢出,目标图像的深度必须是IPL_DEPTH_16S
IplImage *dst=cvCreateImage(cvGetSize(src),IPL_DEPTH_16S,1);
//把源图像转化为灰度图像
cvCvtColor(src,s,CV_RGB2GRAY);
cvNamedWindow("src");
cvShowImage("src",s);
cvNamedWindow("Filtering");
//利用Sobel算子求导数
/*cvSobel( const CvArr* src,
CvArr* dst,
int xorder,
int yorder,
int aperture_size );
xorder和yorder是求导的阶数。
aperture_size 为方形滤波器的宽或高并且应该是奇数。目前aperture_size支持1,3,5,7.*/
//Sobel导数可以定义任意大小的核,并且这些核可以用快速且迭代方式构造。大核对导数有更好的逼近,应为小核对噪声更敏感。
cvSobel(s,dst,1,1,7);
cvShowImage("Filtering",dst);
cvWaitKey(0);
cvReleaseImage( &src );
cvReleaseImage( &dst );
return 0;
}
opencv——Sobel导数
最新推荐文章于 2022-05-07 16:39:48 发布