收藏 分销(赏)

中值滤波-均值滤波-边缘检测-角点检测-基于opencv.doc

上传人:精**** 文档编号:4575933 上传时间:2024-09-30 格式:DOC 页数:13 大小:62KB 下载积分:8 金币
下载 相关 举报
中值滤波-均值滤波-边缘检测-角点检测-基于opencv.doc_第1页
第1页 / 共13页
中值滤波-均值滤波-边缘检测-角点检测-基于opencv.doc_第2页
第2页 / 共13页


点击查看更多>>
资源描述
中值滤波-均值滤波-边缘检测-角点检测-基于opencv ÖÐÖµÂ˲¨,¾ùÖµÂ˲¨,±ßÔµ¼ì²â,½Çµã¼ì²â,»ùÓÚopencv.txt¡°Áµ¡±ÊǸöºÜÇ¿º·µÄ×Ö¡£ËüµÄÉϰ벿ȡ×Ô¡°±ä̬¡±µÄ¡°±ä¡±£¬Ï°벿ȡ×Ô¡°±ä̬¡±µÄ¡°Ì¬¡±¡£#include <iostream> #include <cv.h> #include <highgui.h> using namespace std; bool FilterAV(IplImage* &image,int k); bool FilterAV2(IplImage* &image,int k); bool FilterMid(IplImage* &image,int k); bool FilterMid2(IplImage* &image,int k); bool FeatureTrack(IplImage* &image); bool EdgeTrack(IplImage* &image,int threshold1,int threshold2); int main(int argc,char *argv[])//argcÖ¸±äÁ¿µÄ¸öÊý£¬*argvÖ¸Ïò×Ö·û±äÁ¿ { IplImage *img=0; int height,width,step,channels; uchar *data; //ÔØÈëͼÏñ //img=cvLoadImage("OpenCvDemo.jpg",0);//ת»¯Îªµ¥Í¨µÀ£¬»Ò¶ÈͼÏñ5 img=cvLoadImage("OpenCvDemo.jpg",0); if (!img) { printf("could not load image file: %s\n","OpenCvDemo.jpg"); exit(0); } //»ñȡͼÏñÊý¾Ý height=img->height; width=img->width; step=img->widthStep; channels=img->nChannels; data=(uchar*)img->imageData; printf("processing a %dx%d image with %d channels\n",height,width,channels); //´´½¨´°¿Ú cvNamedWindow("mainWin",CV_WINDOW_AUTOSIZE); cvMoveWindow("mainWin",100,100);//ÒÆ¶¯´°¿Ú£¬ÒÔÆÁÄ»×óÉÏ½ÇµÄÆðµãµÄÆ«ÒÆÁ¿ //FilterAV2(img,3); //FilterAV(img,3); //FilterMid(img,3); //FilterMid2(img,3); //FilterAV(img,3); FeatureTrack(img); //EdgeTrack(img,60,80); //ÏÔʾͼÏñ cvShowImage("mainWin",img); //wait for a key cvWaitKey(0); //release the image cvReleaseImage(&img); return 0; } bool FilterAV(IplImage* &image,int k) {//¾ùÖµÂ˲¨ IplImage *image2=cvCreateImage(cvSize(image->width,image->height),image->depth,1); uchar *p=(uchar *)image2->imageData;//ÉêÇëimage2ͼÏñ¿Õ¼ä int m=(k-1)/2; for (int x=m;x<image->height-m;++x) for (int y=m;y<image->width-m;++y) { int SumData=0; for (int i=-m;i<m+1;++i) for (int j=-m;j<m+1;++j) {//kÎªÆæÊý£¬¼ÆËãk*kÇøÓòµÄ»Ò¶ÈºÍ SumData+=(int)((uchar *)image->imageData)[(x+i)*image->widthStep+y+j]; } p[x*image->widthStep+y]=SumData/(k*k); } image=cvCloneImage(image2);//¿½±´¸øÔ­Í¼Ïñ cvReleaseImage(&image2);//Ïú»ÙÁÙʱ±äÁ¿ return true; } bool FilterAV2(IplImage* &image,int k) {//µ÷ÓÃcvSmoothº¯ÊýʵÏÖ IplImage *dstImage=0; dstImage=cvCreateImage(cvGetSize(image),image->depth,1); cvSmooth(image,dstImage,CV_BLUR,k,k); //CV_BLURÔÚ3*3´óС½øÐоùÖµÂ˲¨ image=cvCloneImage(dstImage); cvReleaseImage(&dstImage); return true; } bool FilterMid(IplImage* &image,int k) {//ÖÐÖµÂ˲¨º¯Êý IplImage *image2=cvCreateImage(cvSize(image->width,image->height),image->depth,1); uchar *ImagePix=(uchar *)image2->imageData; int m=(k-1)/2; for (int x=m;x<image->height-m;++x) for (int y=m;y<image->width-m;++y) { uchar PixArray[100]; int t=0; for (int i=-m;i<m+1;++i) for(int j=-m;j<m+1;++j) {//¸³Öµ²Ù×÷ PixArray[t++]=((uchar *)image->imageData)[(x+i)*image->widthStep+y+j]; } for (int i=0;i<k*k-1;++i) for(int j=0;j<k*k-i-1;++j) {//ÆðÅÝ·¨¿ìËÙÅÅÐò if (PixArray[j]>PixArray[j+1]) { uchar k=PixArray[j]; PixArray[j]=PixArray[j+1]; PixArray[j+1]=k; } } ImagePix[x*image->widthStep+y]=PixArray[(k*k-1)/2]; } image=cvCloneImage(image2);//¿½±´¸øÔ­Í¼Ïñ cvReleaseImage(&image2);//Ïú»ÙÁÙʱ±äÁ¿ return true; } bool FilterMid2(IplImage* &image,int k) { //IplImage *dstImage=0; //dstImage=cvCreateImage(cvGetSize(image),image->depth,1); //cvSmooth(image,dstImage,CV_MEDIAN,k,k); ////CV_BLURÔÚ3*3´óС½øÐоùÖµÂ˲¨ //image=cvCloneImage(dstImage); //cvReleaseImage(&dstImage); cvSmooth(image,image,CV_MEDIAN,k,k); return true; } //½Çµã¼ì²âÓë±ßÔµ¼ì²â bool FeatureTrack(IplImage* &image) { CvPoint2D32f corners[100000]; int CornerCount=0; IplImage *corners1=0,*corners2=0; corners1= cvCreateImage(cvGetSize(image), image->depth, 1); corners2= cvCreateImage(cvGetSize(image),image->depth, 1); cvGoodFeaturesToTrack(image,corners1,corners2,corners,&CornerCount,0.05,20,0); cout<<"Track over!"; // draw circles at each corner location in the gray image and // print out a list the corners for (int i=0;i<CornerCount;++i) { cvCircle(image,cvPoint((int)corners[i].x,(int)corners[i].y),5,cvScalar(255,255,255),2); } cvReleaseImage(&corners1); cvReleaseImage(&corners2); return true; } bool EdgeTrack(IplImage* &image,int threshold1,int threshold2) { IplImage *edge=0; edge=cvCreateImage(cvGetSize(image),image->depth,1); //cvNot(image,edge); //Êý×éÈ¡·´²Ù×÷,ûÓÃÎÒ¾õµÃ cvCanny(image,image,threshold1,threshold2,3); //threshold1,threshold2ÖнÏСµÄ¿ØÖƱßÔµÁ¬½Ó£¬´óµÄ¿ØÖƱßÔµµÄ³õʼ·Ö¸î //Á½¸ö¶¼ÊÇimageÒ²ÐС£¡£¡£‡åËÀÁË return true; }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服