中值滤波,均值滤波,边缘检测,角点检测,基于opencv(Median filter, mean filter, edge detection, corner detection, based on OpenCV).doc
文本预览下载声明
中值滤波,均值滤波,边缘检测,角点检测,基于opencv(Median filter, mean filter, edge detection, corner detection, based on OpenCV)
#包含iostream
#包括简历。”
#包括 highgui。”
使用名称空间;
布尔filterav(IplImage *图像,int k);
布尔filterav2(IplImage *图像,int k);
布尔filtermid(IplImage *图像,int k);
布尔filtermid2(IplImage *图像,int k);
布尔featuretrack(IplImage *图像);
布尔edgetrack(IplImage *图像,threshold1 int,int threshold2);
int main(int argc、argv char * [ ])/指变量的个数argc,argv指向字符变量*
{
IplImage * img = 0;
高度、宽度、步骤、通道;
*数据的函数;
/ /载入图像
/ / img = cvloadimage(“opencvdemo .jpg”,0);//转化为单通道,灰度图像5
img = cvloadimage(“opencvdemo .jpg”,0);
如果(!IMG)
{
printf(“无法加载图像文件:%s \n”、“opencvdemo .jpg”);
出口(0);
}
/ /获取图像数据
高度= IMG -高度;
IMG -宽度宽度=;
步= IMG - widthstep;
IMG - nchannels渠道=;
数据=(函数*)IMG -数据;
printf(“处理一% DX %d %d通道图像”,高度、宽度、通道);
/ /创建窗口
cvnamedwindow(“mainwin”,cv_window_autosize);
cvmovewindow(“mainwin”,100100);//移动窗口,以屏幕左上角的起点的偏移量
/ / filterav2(1mg,3);
/ / filterav(1mg,3);
/ / filtermid(1mg,3);
/ / filtermid2(1mg,3);
/ / filterav(1mg,3);
featuretrack(IMG);
/ / edgetrack(IMG,60,80);
/ /显示图像
cvshowimage(“mainwin”,IMG);
/等待一把钥匙
(0)cvwaitkey;
/释放图像
cvreleaseimage(与IMG);
返回0;
}
布尔filterav(IplImage *图像,int k)
{ //均值滤波
IplImage *形象= cvcreateimage(cvsize(图像-图像-宽度,高度),图像-深度,1);
函数指针(函数*)形象-数据;/ /申请形象图像空间
int m =(k-1)/ 2;
为(int x = M;x<图像- height-m;+ + x)
为(y = m;y<图像- width-m;+ + y)
{
国际sumdata = 0;
对于(int i=m;i<1;+ i)
用于(int j=m;j<1;+ j)
{ // K为奇数,计算K×K区域的灰度和
sumdata + =(int)((函数*)图像-图像)[(x +我)*图像- widthstep + Y + ];
}
P [ x *图像- widthstep + Y ] = sumdata /(k);
}
图像= cvcloneimage(形象);/ /拷贝给原图像
cvreleaseimage(与形象);/ /销毁临时变量
返回true;
}
布尔filterav2(IplImage *图像,int k)
{ //调用cvSmooth函数实现
dstimage IplImage * = 0;
dstimage = cvcreateimage(cvgetsize(图像),图像-深度,1);
cvSmooth(图像,dstimage,cv_blur,k,k);
/ / cv_blur在3×3大小进行均值滤波
图像= cvcloneimage(dstimage);
cvreleaseimage(与dstimage);
返回true;
}
布尔filtermid(IplImage *图像,int k)
{ //中值滤波函数
IplImage *形象= cvcreateimage(cvsize(图像-图像-宽度、高度),
图像深度 1;
* imagepix =函数(函数*)形象-数据;
int m =(k-1)/ 2;
为(int x = M;x<图像- heigh
显示全部