zoukankan      html  css  js  c++  java
  • (9)调整图像的亮度和对比度

    下面是效果展示图:

    下面是代码展示:

     1 #include<iostream>
     2 #include<opencv.hpp>
     3 
     4 using namespace std;
     5 using namespace cv;
     6 
     7 int main()
     8 {
     9 
    10     Mat sou;
    11     sou = imread("C:\Users\32829\Desktop\aa.jpg");
    12     if (!sou.data)
    13     {
    14         cout << "图像载入失败" << endl;
    15     }
    16     namedWindow("old");
    17     imshow("old", sou);
    18 
    19     Mat dst;
    20     //定义一张空的图片
    21     dst = Mat::zeros(sou.size(), sou.type());
    22     int height = sou.rows;//图片的高度
    23     int weight = sou.cols;//图片的宽度
    24     float alpha = 1.2;//自己设置的亮度的那个a
    25     float beta = 30;//增量
    26     for (int row = 0; row <( height); row++)
    27     {
    28         for ( int col = 0; col <( weight); col++)
    29         {
    30             //一通道直接就是修改就行了
    31             if (sou.channels() == 1)
    32             {
    33                 int v = sou.at<uchar>(row, col);
    34                 dst.at<uchar>(row, col) = saturate_cast<uchar>(v*alpha + beta);
    35 
    36             }
    37             if (sou.channels() == 3)
    38             {
    39                 //三通道,先获得他的每个通道的数值,然后再修改,赋给新的图片
    40                 float b = (sou.at<Vec3b>(row, col)[0]);
    41                 float g = (sou.at<Vec3b>(row, col)[1]);
    42                 float r = (sou.at<Vec3b>(row, col)[2]);
    43                 dst.at<Vec3b>(row, col)[0] = saturate_cast<uchar>(b * alpha + beta);
    44                 dst.at<Vec3b>(row, col)[1] = saturate_cast<uchar> (g * alpha + beta);
    45                 dst.at<Vec3b>(row, col)[2] = saturate_cast<uchar> (r * alpha + beta);
    46             }
    47         }
    48     }
    49 
    50     namedWindow("new1");
    51     imshow("new1", dst);
    52 
    53 
    54 
    55 
    56 
    57 
    58 
    59 
    60 
    61 
    62     waitKey(0);
    63 
    64 
    65 
    66 
    67     return 1;
    68 }

    但是之前用Vec3f。发生问题,但是添加一个函数就可以了,看来得转换一下,因为图片一个像素都是用一个字节来表示的;

     ===========================================================================

    基础知识总结

    ===============================================================================

    =======================================================================

    ===================================================================

  • 相关阅读:
    解决winform DataGridView 绑定数字值列排序不对的问题
    C#中向数据库中添加注册新用户,并查询数据库中是否存在同名的用户。
    SQL数据库的脱机与联机操作
    odoo视频教程收集
    odoo10导入导出-转
    草稿-bom- 肥料生产
    freebsd 域名服务器
    freebsd启动报错:My unqualified host name unkown...Sleeping for retry.
    docker-freebsd-20150625
    supervisorctl error
  • 原文地址:https://www.cnblogs.com/xiaoyoucai/p/10180319.html
Copyright © 2011-2022 走看看