1、,opencv.txt#include #include #include using namespace std;bool FilterAV(IplImage* bool FilterAV2(IplImage* bool FilterMid(IplImage* bool FilterMid2(IplImage* bool FeatureTrack(IplImage* bool EdgeTrack(IplImage* int main(int argc,char *argv)/argc*argvIplImage *img=0;int height,width,step,channels;uch
2、ar *data;/img=cvLoadImage(“OpenCvDemo.jpg“,0);/5img=cvLoadImage(“OpenCvDemo.jpg“,0);if (!img)printf(“could not load image file: %sn“,“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
3、 %d channelsn“,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 keycvWaitKey(0);
4、/release the imagecvReleaseImage(return 0;bool FilterAV(IplImage* uchar *p=(uchar *)image2-imageData;/image2int m=(k-1)/2;for (int x=m;xheight-m;+x)for (int y=m;ywidth-m;+y)int SumData=0;for (int i=-m;iimageData)(x+i)*image-widthStep+y+j;px*image-widthStep+y=SumData/(k*k);image=cvCloneImage(image2);
5、/-cvReleaseImage(/return true;bool FilterAV2(IplImage* dstImage=cvCreateImage(cvGetSize(image),image-depth,1);cvSmooth(image,dstImage,CV_BLUR,k,k);/CV_BLUR3*3image=cvCloneImage(dstImage);cvReleaseImage(return true;bool FilterMid(IplImage* uchar *ImagePix=(uchar *)image2-imageData;int m=(k-1)/2;for (
6、int x=m;xheight-m;+x)for (int y=m;ywidth-m;+y)uchar PixArray100;int t=0;for (int i=-m;iimageData)(x+i)*image-widthStep+y+j;for (int i=0;iPixArrayj+1)uchar k=PixArrayj;PixArrayj=PixArrayj+1;PixArrayj+1=k;ImagePixx*image-widthStep+y=PixArray(k*k-1)/2;image=cvCloneImage(image2);/-cvReleaseImage(/return
7、 true;bool FilterMid2(IplImage* /dstImage=cvCreateImage(cvGetSize(image),image-depth,1);/cvSmooth(image,dstImage,CV_MEDIAN,k,k);/CV_BLUR3*3/image=cvCloneImage(dstImage);/cvReleaseImage(cvSmooth(image,image,CV_MEDIAN,k,k);return true;/bool FeatureTrack(IplImage* int CornerCount=0;IplImage *corners1=0
8、,*corners2=0;corners1= cvCreateImage(cvGetSize(image), image-depth, 1);corners2= cvCreateImage(cvGetSize(image),image-depth, 1);cvGoodFeaturesToTrack(image,corners1,corners2,corners,coutdepth,1);/cvNot(image,edge);/,cvCanny(image,image,threshold1,threshold2,3);/threshold1,threshold2/imagereturn true;