学习opencv第五章练习题

1

View Code
#include <cv.h>
#include <highgui.h>

int main(int argc, int argv[])
{
    IplImage* img = cvLoadImage("0.jpg");
    
    IplImage* des1 = cvCreateImage(cvGetSize(img),img->depth,img->nChannels);
    IplImage* des2 = cvCreateImage(cvGetSize(img),img->depth,img->nChannels);
    IplImage* des3 = cvCreateImage(cvGetSize(img),img->depth,img->nChannels);
    IplImage* des4 = cvCreateImage(cvGetSize(img),img->depth,img->nChannels);

    cvSmooth(img,des1,CV_GAUSSIAN,3,3,0,0);
    cvSmooth(img,des2,CV_GAUSSIAN,5,5,0,0);
    cvSmooth(img,des3,CV_GAUSSIAN,9,9,0,0);
    cvSmooth(img,des4,CV_GAUSSIAN,11,11,0,0);

    cvNamedWindow("源图像");
    cvNamedWindow("平滑3*3图像");
    cvNamedWindow("平滑5*5图像");
    cvNamedWindow("平滑9*9图像");
    cvNamedWindow("平滑11*11图像");


    cvShowImage("源图像",img);
    cvShowImage("平滑3*3图像",des1);
    cvShowImage("平滑5*5图像",des2);
    cvShowImage("平滑9*9图像",des3);
    cvShowImage("平滑11*11图像",des4);

    cvWaitKey(0);
    cvReleaseImage(&des1);
    cvReleaseImage(&des2);
    cvReleaseImage(&des3);
    cvReleaseImage(&des4);
    return 0;
}

 

3

View Code
#include <cv.h>
#include <highgui.h>

int main(int argc, int argv[])
{    
    IplImage* img = cvLoadImage("01.jpg");


    IplImage* des1 = cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,img->nChannels);
    IplImage* des2 = cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,img->nChannels);
    IplImage* des3 = cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,img->nChannels);

    //a
    
    cvSmooth(img,des1,CV_GAUSSIAN,9,9,1);
    cvSmooth(img,des2,CV_GAUSSIAN,9,9,4);
    cvSmooth(img,des3,CV_GAUSSIAN,9,9,6);
    
    //b
    /*
    cvSmooth(img,des1,CV_GAUSSIAN,0,0,1);
    cvSmooth(img,des2,CV_GAUSSIAN,0,0,4);
    cvSmooth(img,des3,CV_GAUSSIAN,0,0,6);
    */
    //c
    /*
    cvSmooth(img,des1,CV_GAUSSIAN,0,0,1,9);
    */
    //d
    /*
    cvSmooth(img,des3,CV_GAUSSIAN,0,0,9,1);
    */
    
    //e
    /*
    cvSmooth(img,des1,CV_GAUSSIAN,0,0,1,9);
    cvSmooth(des1,des2,CV_GAUSSIAN,0,0,9,1);
    */
    //f
    /*
    cvSmooth(img,des1,CV_GAUSSIAN,0,0,9,9);
    cvSmooth(des1,des2,CV_GAUSSIAN,0,0,0,0);
    */

    cvNamedWindow("src");
    cvNamedWindow("9*9*1");
    cvNamedWindow("9*9*4");
    cvNamedWindow("9*9*6");

    cvShowImage("src",img);
    cvShowImage("9*9*1",des1);
    cvShowImage("9*9*4",des2);
    cvShowImage("9*9*6",des3);

    cvReleaseImage(&des1);
    cvReleaseImage(&des2);
    cvReleaseImage(&des3);
    
    cvWaitKey(0);
    return 0;
}

 

 4

View Code
#include <cv.h>
#include <highgui.h>

int main(int argc, int argv[])
{    
    IplImage* img1 = cvLoadImage("test1.jpg");
    IplImage* img2 = cvLoadImage("test2.jpg");
    
    IplImage* diff12 = cvCreateImage(cvGetSize(img1),img1->depth,img1->nChannels);
    IplImage* cleandiff = cvCreateImage(cvGetSize(img1),img1->depth,img1->nChannels);
    IplImage* cleandiff1 = cvCreateImage(cvGetSize(img1),img1->depth,img1->nChannels);
    IplImage* dirdiff = cvCreateImage(cvGetSize(img1),img1->depth,img1->nChannels);
    IplImage* dirdiff1 = cvCreateImage(cvGetSize(img1),img1->depth,img1->nChannels);

    cvNamedWindow("diff12");
    cvNamedWindow("cleandiff");
    cvNamedWindow("dirdiff");

    cvAbsDiff(img1,img2,diff12);
    cvShowImage("diff12",diff12);


    cvErode(diff12,cleandiff);
    cvDilate(cleandiff,cleandiff1);
    cvShowImage("cleandiff",cleandiff1);

    cvErode(diff12,dirdiff);
    cvDilate(dirdiff,dirdiff1);
    cvShowImage("dirdiff",dirdiff1);


    cvReleaseImage(&diff12);
    cvWaitKey(0);
    return 0;
}

 

 

10

View Code
//a

#include <cv.h>
#include <highgui.h>

float scale = 0.5;

int main(int argc, int argv[])
{    
    IplImage* img = cvLoadImage("01.jpg");

    IplImage* des1 = cvCreateImage(cvSize(img->height*scale,img->width*scale),img->depth,img->nChannels);
    IplImage* des2 = cvCreateImage(cvSize(des1->height*scale,des1->width*scale),img->depth,img->nChannels);
    

    cvResize(img,des1);
    cvResize(des1,des2);

    cvShowImage("img",img);
    cvShowImage("des1",des1);
    cvShowImage("des2",des2);



    cvWaitKey(0);
    return 0;
}
//b
#include <cv.h>
#include <highgui.h>

float scale = 0.5;

IplImage* doPyrDown( IplImage* src )  
{  
    IplImage* result = cvCreateImage( cvSize( src -> width/2, src -> height/2 ), src -> depth, src -> nChannels );  
    //库函数调用cvPyrDown  
    cvPyrDown( src, result, CV_GAUSSIAN_5x5 );  //高斯变换  
  
    return  result;  
}  

int main(int argc, int argv[])
{    
    IplImage* img = cvLoadImage("01.jpg");

    IplImage* des1 = 0;
    IplImage* des2 = 0;

    des1 = doPyrDown(img);
    des2 = doPyrDown(des1);

    cvShowImage("img",img);
    cvShowImage("des1",des1);
    cvShowImage("des2",des2);



    cvWaitKey(0);
    return 0;
}

 

11

View Code
#include <cv.h>
#include <highgui.h>
#include <stdio.h>

void docvPyrSegmentation(IplImage* src,IplImage* dst)
{
    assert(src->width%2==0&&src->height%2==0);
    CvMemStorage* storage = cvCreateMemStorage(0);
    CvSeq* comp = NULL;
    int level = 3;
    double threshold1 = 150;
    double threshold2 = 30;
    cvPyrSegmentation(src,dst,storage,&comp,level,threshold1,threshold2);
}

int main(int argc, int argv[])
{    
    IplImage* img = cvLoadImage("01.jpg");
    IplImage* dst = cvCreateImage(cvGetSize(img),img->depth,img->nChannels);

    docvPyrSegmentation(img,dst);

    cvShowImage("img",img);
    cvShowImage("des",dst);



    cvWaitKey(0);
    return 0;
}

 

posted on 2013-03-02 14:59  NewPanderKing  阅读(201)  评论(0)    收藏  举报

导航