• opencv学习之路(9)、对比度亮度调整与通道分离


    一、对比度亮度调整

     1 #include<opencv2/opencv.hpp>
     2 using namespace cv;
     3 
     4 #define WIN_NAME "输出图像"
     5 Mat src,dst;
     6 int contrast=20,bright=20;
     7 
     8 void onChange(int,void*){
     9     for (int i = 0; i < src.rows; i++)
    10     {
    11         for (int j = 0; j < src.cols; j++)
    12         {
    13             //saturate_cast<uchar>    溢出保护:if(data<0) data=0;    if(data>255) data=255;
    14             dst.at<Vec3b>(i,j)[0]=saturate_cast<uchar>(src.at<Vec3b>(i,j)[0]*contrast*0.01+bright);
    15             dst.at<Vec3b>(i,j)[1]=saturate_cast<uchar>(src.at<Vec3b>(i,j)[1]*contrast*0.01+bright);
    16             dst.at<Vec3b>(i,j)[2]=saturate_cast<uchar>(src.at<Vec3b>(i,j)[2]*contrast*0.01+bright);
    17         }
    18     }
    19     imshow("原图",src);
    20     imshow(WIN_NAME,dst);
    21 }
    22 
    23 void main(){
    24     src=imread("E://1.jpg");
    25     dst=Mat::zeros(src.size(),src.type());
    26     //Mat::zeros();//将矩阵元素置为0
    27     //Mat::ones();//置1
    28     namedWindow(WIN_NAME,CV_WINDOW_AUTOSIZE);
    29     createTrackbar("对比度",WIN_NAME,&contrast,300,onChange,0);
    30     createTrackbar("亮  度",WIN_NAME,&bright,200,onChange,0);
    31 
    32     onChange(contrast,0);//回调函数初始化
    33     onChange(bright,0);
    34 
    35     waitKey(0);
    36 
    37 }

    二、通道分离与合并

     1 #include<opencv2/opencv.hpp>
     2 using namespace cv;
     3 
     4 void main(){
     5     Mat img=imread("E://2.jpg");
     6     Mat dst;
     7     vector<Mat>channels;//定义Mat类型的向量
     8 
     9     split(img,channels);//通道分离
    10     Mat blue=channels.at(0);
    11     Mat green=channels.at(1);
    12     Mat red=channels.at(2);
    13 
    14     threshold(blue,blue,200,255,THRESH_BINARY);//二值化:大于200的赋值255,小于200的赋值0
    15     threshold(green,green,200,255,THRESH_BINARY);
    16     threshold(red,red,200,255,THRESH_BINARY);
    17 
    18     merge(channels,dst);//通道合并
    19 
    20     imshow("原图",img);
    21     imshow("blue",blue);
    22     imshow("green",green);
    23     imshow("red",red);
    24     imshow("dst",dst);
    25     waitKey(0);
    26 }

  • 相关阅读:
    mysql权限管理
    centos 6.5安装node.js
    sublime 配置jade高亮显示
    解决国内npm依赖包安装慢的问题
    sublime text3配置node.js开发环境
    datepicker 时间戳转换问题
    关于c++正则表达式的用法
    Android系统binder机制的研究分析
    TCP/IP的分层复用问题
    关于设计模式中外观模式的研究以及关于设计模式中四大原则的理解
  • 原文地址:https://www.cnblogs.com/little-monkey/p/7207474.html
Copyright © 2020-2023  润新知