zoukankan      html  css  js  c++  java
  • 《学习OpenCV》练习题第三章第七题

     1 #include "opencv_libs.h"
     2 #include <highgui.h>
     3 #include <cv.h>
     4 #include <stdio.h>
     5 
     6 #pragma comment (lib,"opencv_calib3d231d.lib")
     7 #pragma comment (lib,"opencv_contrib231d.lib")
     8 #pragma comment (lib,"opencv_core231d.lib")
     9 #pragma comment (lib,"opencv_features2d231d.lib")
    10 #pragma comment (lib,"opencv_flann231d.lib")
    11 #pragma comment (lib,"opencv_gpu231d.lib")
    12 #pragma comment (lib,"opencv_haartraining_engined.lib")
    13 #pragma comment (lib,"opencv_highgui231d.lib")
    14 #pragma comment (lib,"opencv_imgproc231d.lib")
    15 #pragma comment (lib,"opencv_legacy231d.lib")
    16 #pragma comment (lib,"opencv_ml231d.lib")
    17 #pragma comment (lib,"opencv_objdetect231d.lib")
    18 #pragma comment (lib,"opencv_ts231d.lib")
    19 #pragma comment (lib,"opencv_video231d.lib")
    20 
    21 /*
    22  *《学习OpenCV》第三章第五题
    23  * 完成时间:0:41 3/3 星期日  2013
    24  */
    25 
    26 int main()
    27 {
    28     // 加载一个三通道的彩色图像
    29     IplImage * srcImage = cvLoadImage("lena.bmp", 1);
    30 
    31     // 分割成R, G, B三个单通道图像
    32     IplImage* red_plane = cvCreateImage(cvGetSize(srcImage), srcImage->depth, 1);
    33     IplImage* green_plane = cvCreateImage(cvGetSize(srcImage), srcImage->depth, 1);
    34     IplImage* blue_plane = cvCreateImage(cvGetSize(srcImage), srcImage->depth, 1);
    35 
    36     // 分离RGB图像的顺序为 B, G, R
    37     cvSplit(srcImage, blue_plane, green_plane, red_plane,  NULL);
    38 
    39     // 克隆绿图两次
    40     IplImage* clone1 = cvCloneImage(green_plane);
    41     IplImage* clone2 = cvCloneImage(green_plane);
    42 
    43     // 找到绿色平面的最大值和最小值
    44     double dMaxValue, dMinValue;
    45     cvMinMaxLoc(green_plane, &dMinValue, &dMaxValue, NULL, NULL, NULL);
    46     printf("Max: %f\tMin: %f\n", dMaxValue, dMinValue);
    47 
    48     // 将clone1的所有元素赋值为thresh = (unsigned char)((max - min)/2))
    49     unsigned char thresh = (dMaxValue - dMinValue)/2;
    50     cvSet(clone1, cvScalarAll(thresh), 0);
    51     // 将clone2的所有元素赋零
    52     cvSet(clone2, cvScalarAll(0), 0);
    53 
    54     // 生成掩码图像
    55     cvCmp(green_plane, clone1, clone2, CV_CMP_GE);
    56 
    57     // 显示结果
    58     cvSubS(green_plane, cvScalarAll(thresh/2), green_plane, clone2 );
    59 
    60     cvShowImage("clone1", clone1);
    61     cvShowImage("clone2", clone2);
    62 
    63     cvShowImage("", red_plane);
    64     cvShowImage("绿", green_plane);
    65     cvShowImage("", blue_plane);
    66     cvShowImage("原始图像", srcImage);
    67     
    68     cvvWaitKey(0);
    69 
    70     cvReleaseImage(&srcImage);
    71     cvReleaseImage(&red_plane);
    72     cvReleaseImage(&green_plane);
    73     cvReleaseImage(&blue_plane);
    74     cvReleaseImage(&clone1);
    75     cvReleaseImage(&clone2);
    76     cvDestroyAllWindows();
    77     return 0;
    78 }

    运行结果:

  • 相关阅读:
    python详解json模块
    postman---post请求数据类型
    postman---postman发送请求
    SpringBoot之集成通用Mapper
    Mybatis-generator/通用Mapper/Mybatis-Plus对比
    spring-data-JPA repository自定义方法规则
    JPA之@GeneratedValue注解
    Java工具类NumberUtils使用
    shell函数
    Maven的生命周期
  • 原文地址:https://www.cnblogs.com/qdsclove/p/3008769.html
Copyright © 2011-2022 走看看