文档详情

中值滤波,均值滤波,边缘检测,角点检测,基于opencv(Median filter, mean filter, edge detection, corner detection, based on OpenCV).doc

发布:2017-07-21约3.6千字共11页下载文档
文本预览下载声明
中值滤波,均值滤波,边缘检测,角点检测,基于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
显示全部
相似文档