zoukankan      html  css  js  c++  java
  • opencv第四章

    1.载入一个带有有趣纹理的图像,使用cvSmooth()函数以多种方法平滑图像,参数为smoothtype = CV_GAUSSIAN.

    a.使用对称的平滑的平滑窗口,大小依次是3x3,5x5,9x9,11x11,并显示结果。

    b.用5x5高斯滤净器平滑图像两次和用两次11x11平滑器平滑一次的输出结果是最接近相同吗?为什么?

    #include <cv.h>
    #include <highgui.h>
    int main()
    {
        IplImage *img = cvLoadImage("3.jpg", 1);
        cvNamedWindow("原图", 1);
        cvShowImage("原图", img);
        IplImage *three = cvCreateImage(cvSize(img->width, img->height), img->depth, img->nChannels);
        IplImage *five = cvCreateImage(cvSize(img->width, img->height), img->depth, img->nChannels);
        IplImage *double_five = cvCreateImage(cvSize(img->width, img->height), img->depth, img->nChannels);
        IplImage *nine = cvCreateImage(cvSize(img->width, img->height), img->depth, img->nChannels);
        IplImage *eleven = cvCreateImage(cvSize(img->width, img->height), img->depth, img->nChannels);
        IplImage *double_eleven = cvCreateImage(cvSize(img->width, img->height), img->depth, img->nChannels);
        
        cvSmooth(img, three, CV_GAUSSIAN, 3, 3);
        cvSmooth(img, five, CV_GAUSSIAN, 5, 5);
        cvSmooth(img, nine, CV_GAUSSIAN, 9, 9);
        cvSmooth(img, eleven, CV_GAUSSIAN, 11, 11);
        cvSmooth(five, double_five, CV_GAUSSIAN, 5, 5);
        cvSmooth(eleven, double_eleven, CV_GAUSSIAN, 11, 11);
        cvNamedWindow("three", 1);
        cvNamedWindow("five", 1);
        cvNamedWindow("nine", 1);
        cvNamedWindow("eleven", 1);
        cvNamedWindow("double_five", 1);
        cvNamedWindow("double_eleven", 1);
        cvShowImage("three", three);
        cvShowImage("five", five);
        cvShowImage("nine", nine);
        cvShowImage("eleven", eleven);
        cvShowImage("double_five", double_five);
        cvShowImage("double_eleven", double_eleven);
        cvWaitKey();
        cvReleaseImage(&img);
        cvReleaseImage(&three);
        cvReleaseImage(&five);
        cvReleaseImage(&double_five);
        cvReleaseImage(&nine);
        cvReleaseImage(&eleven);
        cvReleaseImage(&double_eleven);
        cvDestroyAllWindows();
        return 0;
    }

     2.

    #include <cv.h>
    #include <highgui.h>
    int main()
    {
        IplImage *img = cvCreateImage(cvSize(400, 400), IPL_DEPTH_8U, 1);
        IplImage *five = cvCreateImage(cvSize(img->width, img->height), img->depth, img->nChannels);
        IplImage *nine = cvCreateImage(cvSize(img->width, img->height), img->depth, img->nChannels);
        cvZero(img);
        cvNamedWindow("main1", 1);
        cvShowImage("main1", img);
        for (int i = 199; i <= 201; i++)
        {
            uchar *ptr = (uchar*)(img->imageData + i*img->widthStep);
            for (int j = 199; j <= 201; j++)
            {
                ptr[j] = 0xff;
            }
        }
        cvNamedWindow("main", 1);
        cvShowImage("main", img);
    
        cvSmooth(img, five, CV_GAUSSIAN,5,5);
        cvSmooth(five, five, CV_GAUSSIAN, 5, 5);
    
        cvNamedWindow("five", 1);
        cvShowImage("five", five);
    
    
        cvSmooth(five, nine, CV_GAUSSIAN, 9, 9);
        cvNamedWindow("nine", 1);
        cvShowImage("nine", nine);
        cvWaitKey();
    
        cvReleaseImage(&img);
        cvReleaseImage(&five);
        cvReleaseImage(&nine);
        cvDestroyAllWindows();
        return 0;
    }

     4.

    #include <cv.h>
    #include <highgui.h>
    int main()
    {
        IplImage *img1 = cvLoadImage("111.jpg", 0);
        IplImage *img2 = cvLoadImage("112.jpg", 0);
        IplImage *img3 = cvCreateImage(cvSize(img1->width, img1->height), img1->depth, img1->nChannels);
        IplImage *img4 = cvCreateImage(cvSize(img1->width, img1->height), img1->depth, img1->nChannels);
        IplImage *img5 = cvCreateImage(cvSize(img1->width, img1->height), img1->depth, img1->nChannels);
        cvSub(img1, img2,img3,NULL);//img1 - img2
        cvAbs(img3, img3);    //    img3 的绝对值
    
        cvDilate(img3, img4, NULL, 1); //膨胀处理
        cvErode(img4, img5, NULL, 1);    //腐蚀操作
        cvNamedWindow("111.jpg", 1);
        cvNamedWindow("112.jpg", 1);
        cvNamedWindow("img3", 1);
        cvNamedWindow("img4", 1);
        cvNamedWindow("img5", 1);
        cvShowImage("111.jpg", img1);
        cvShowImage("112.jpg", img2);
        cvShowImage("img3", img3);
        cvShowImage("img4", img4);
        cvShowImage("img5", img5);
        cvWaitKey();
        cvReleaseImage(&img1);
        cvReleaseImage(&img2);
        cvReleaseImage(&img3);
        cvReleaseImage(&img4);
        cvReleaseImage(&img5);
        cvDestroyAllWindows();
        return 0;
    }

     5

    #include <cv.h>
    #include <highgui.h>
    int main()
    {
        IplImage *img1 = cvLoadImage("100.jpg", CV_LOAD_IMAGE_GRAYSCALE);
        IplImage *img2 = cvLoadImage("101.jpg", CV_LOAD_IMAGE_GRAYSCALE);
        IplImage *img3 = cvCreateImage(cvGetSize(img1), img1->depth, img1->nChannels);
        IplImage *img4 = cvCreateImage(cvGetSize(img1), img1->depth, img1->nChannels);
        IplImage *img5 = cvCreateImage(cvGetSize(img1), img1->depth, img1->nChannels);
        cvSub(img1, img2, img3, NULL);//img1 - img2 = img3
        cvAbs(img3, img3); //img3 的绝对值
        cvThreshold(img3, img4, 0, 255, CV_THRESH_BINARY_INV);  //对img3进行二进制阀值操作
        IplConvKernel *element = cvCreateStructuringElementEx(3, 3, 1, 1, CV_SHAPE_RECT, NULL);//自定义核
        cvMorphologyEx(img4, img5, NULL, element, CV_MOP_OPEN, 1);//进行开运算
        cvReleaseStructuringElement(&element); //释放核
        cvNamedWindow("img1", 1);
        cvNamedWindow("img2", 1);
        cvNamedWindow("img3", 1);
        cvNamedWindow("img4", 1);
        cvNamedWindow("img5", 1);
        cvShowImage("img1", img1);
        cvShowImage("img2", img2);
        cvShowImage("img3", img3);
        cvShowImage("img4", img4);
        cvShowImage("img5", img5);
        cvWaitKey();
        cvReleaseImage(&img1);
        cvReleaseImage(&img2);
        cvReleaseImage(&img3);
        cvReleaseImage(&img4);
        cvReleaseImage(&img5);
        cvDestroyAllWindows();
        return 0;
    }
  • 相关阅读:
    关于modelsim的波形文件(vsim.wlf)(转自http://www.eefocus.com/ican/blog/1010/196941_ebbde.html)
    c++ 头文件 再学习
    c++头文件和#include 学习笔记
    C++中嵌入汇编(vs)
    cocos2dx plist使用
    OpenGL 前凑
    别人的经验和自己现在的疑惑
    C++ 枚举类型
    cocos2dx draw & update
    const对象分析
  • 原文地址:https://www.cnblogs.com/chenyang920/p/5367557.html
Copyright © 2011-2022 走看看