C#+OpenCV基础(八)_获取修改图片亮度

1、获取图片亮度

/// <summary>
/// 获取图片的亮度(取HSV中V通道的均值)
/// </summary>
/// <param name="mat">图片</param>
/// <returns></returns>
public static Scalar GetVChannelMean(Mat mat)
{
    // 转Hsv图片
    Mat hsv = new Mat();
    Cv2.CvtColor(mat, hsv, ColorConversionCodes.BGR2HSV);

    // 取V通道
    Cv2.Split(hsv, out Mat[] mats);
    Mat vMat = mats[2];

    // 求平均值
    Scalar meanValue = vMat.Mean();  // 同 Cv2.Mean(vMat);

    return meanValue;
}

2、修改图片亮度

/// <summary>
/// 修改图片的亮度(修改HSV中V通道的每个像素值;但不进行对比度补偿)
/// </summary>
/// <param name="mat">图片</param>
/// <param name="modifyValue">修改值</param>
/// <returns></returns>
public static Mat SetVChannelValue(Mat mat, int modifyValue)
{
    // 转Hsv图片
    Mat hsv = new Mat();
    Cv2.CvtColor(mat, hsv, ColorConversionCodes.BGR2HSV);

    // 取V通道并修改值
    Cv2.Split(hsv, out Mat[] mats);
    //mats[2] = new Mat(mats[2].Size(), mats[2].Type(), new Scalar(255));  // 修改值;new Scalar(modifyValue)
    Mat mat2 = new Mat();
    Cv2.Add(mats[2], new Scalar(modifyValue), mat2);
    mats[2] = mat2;

    // 合并
    Mat dstMet = new Mat();
    Cv2.Merge(mats, dstMet);

    return dstMet;
}
posted @   ꧁执笔小白꧂  阅读(195)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
历史上的今天:
2021-07-10 layui的table.render使用
2019-07-10 html根据下拉框选中的值修改背景颜色
点击右上角即可分享
微信分享提示