利用OpenCV判断图像是否过亮或过暗

这篇具有很好参考价值的文章主要介绍了利用OpenCV判断图像是否过亮或过暗。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在处理图像自动亮度调节时,需要判断图像是否过亮或者过暗,从而根据图像给出的结果,进行调节。方法如下:文章来源地址https://www.toymoban.com/news/detail-613745.html

int isLight(cv::Mat& src)
{
    cv::Mat gray;
    //转为灰度图片
    cv::cvtColor(src, gray, cv::COLOR_BGR2GRAY);
    float sum = 0;
    float avg = 0;
    cv::Scalar scalar;
    int ls[256];
    int size = gray.rows * gray.cols;
    for (int i = 0; i < 256; i++)
        ls[i] = 0;
    for (int i = 0; i < gray.rows; i++)
    {
        for (int j = 0; j < gray.cols; j++)
        {
            //scalar = cvGet2D(gray, i, j);
            scalar = gray.at<uchar>(i, j);
            sum += (scalar.val[0] - 128);
            int x = (int)scalar.val[0];
            ls[x]++;
        }
    }
    avg = sum / size;
    float total = 0;
    float mean = 0;
    for (int i = 0; i < 256; i++)
    {
        total += abs(float(i - 128) - avg) * ls[i];
    }
    mean = total / size;
    float cast = abs(avg / mean);
    std::cout <<  "亮度异常值:" << cast << std::endl;
    if (cast > 1)
    {
        if (avg > 0)
        {
            std::cout << "亮度异常 过亮" << avg << std::endl;
            return 1;
        }
        else {
            std::cout << "亮度异常 过暗" << avg << std::endl;
            return -1;
        }
    }
    else
    {
        std::cout << "normal" << std::endl;
        return 0;
    }
}

到了这里,关于利用OpenCV判断图像是否过亮或过暗的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 利用JavaRestClient实现创建、删除索引库,判断索引库是否存在

    在elasticsearch提供的API中,与elasticsearch一切交互都封装在一个名为RestHighLevelClient的类中,必须先完成这个对象的初始化,建立与elasticsearch的连接。 1)引入es的RestHighLevelClient依赖: 注:导入的依赖的版本要和打开的es的版本对应  2)初始化RestHighLevelClient:    把建库的json封

    2024年02月11日
    浏览(41)
  • Unity利用正则表达式判断字符串是否满足要求

    首先该方法属于C#,是C#提供的,不是unity提供的,但我使用这个是在unity中使用的,故此我将其归入unity笔记。 该方式可用于注册、登录等等需要用户输入的场景,用以判断字符串是否满足正则表达式的要求 首先介绍该API 这里开始介绍,大家可以看看官方的文档Regex.IsMatch 方

    2024年01月16日
    浏览(39)
  • 【图像处理】Python判断一张图像是否亮度过低

    比如: 直方图: 代码: 这段代码是一个用于判断图像亮度是否过暗的函数is_dark,并对输入的图像进行可视化直方图展示。 首先,通过import语句导入了cv2和matplotlib.pyplot模块,用于图像处理和可视化。 is_dark函数的作用是判断输入图像的平均亮度是否低于设定的阈值。函数接

    2024年02月16日
    浏览(54)
  • 【图像处理】Python判断一张图像是否亮度过低,图片模糊判定

    比如: 直方图: 代码: 这段代码是一个用于判断图像亮度是否过暗的函数is_dark,并对输入的图像进行可视化直方图展示。 首先,通过import语句导入了cv2和matplotlib.pyplot模块,用于图像处理和可视化。 is_dark函数的作用是判断输入图像的平均亮度是否低于设定的阈值。函数接

    2024年02月16日
    浏览(42)
  • 利用java语言中的stream流操作判断一个数组中是否有重复元素

    判断数组中是否有重复元素可以说是每一个编程语言初学者都会遇到的题目,常见的各种搜索算法本文不做赘述了,我们这次介绍的是利用java语言中特有的stream流操作来判断通用类型数组是否包含重复元素。 首先我们声明一个泛型方法: 表明该方法适用于所有类型的数组。

    2024年02月12日
    浏览(30)
  • Android Glide判断图像资源是否缓存onlyRetrieveFromCache,使用缓存数据,Kotlin

    本文详细介绍了如何在Android开发中使用Glide库和Kotlin语言处理图像缓存。包括判断图像资源是否已缓存,以及如何只从缓存中加载图像。

    2024年02月08日
    浏览(48)
  • python opencv 判断点是否在区域内——cv2.pointPolygonTest()

    👨‍💻 个人简介: 深度学习图像领域工作者 🎉 总结链接:              链接中主要是个人工作的总结,每个链接都是一些常用demo,代码直接复制运行即可。包括:                     📌 1.工作中常用深度学习脚本                     📌 2.to

    2024年02月06日
    浏览(29)
  • Python-opencv实现目标检测定位:判断固定颜色物体是否在规定区域内

    主要实现实时检测视频或者摄像头中出现的固定颜色(本例中使用绿色)是否在规定的区域范围内,并将结果反馈到原视频上。 实现的效果如下图所示: 1、当绿色物体出现在屏幕中的黑框中时,在视频左上角反馈一个“True”的信息。 2、当绿色物体出现在屏幕中但没有完全

    2024年01月17日
    浏览(29)
  • 利用OpenCV实现图像拼接

         图像拼接.      要实现图像拼接,简单来说有以下几步: 对每幅图进行特征点提取 对对特征点进行匹配 进行图像配准 把图像拷贝到另一幅图像的特定位置 对重叠边界进行特殊处理      PS:需要使用低版本的opencv,否则无法使用特征角点提取算子。      

    2024年02月10日
    浏览(27)
  • OpenCV利用透视变换矫正图像

    案例:使用OpenCV将一张折射的图片给矫正过来 实现步骤: 1.载入图像 2.图像灰度化 3.二值分割 4.形态学操作去除噪点 5.轮廓发现 6.使用霍夫直线检测,检测上下左右四条直线(有可能是多条,但是无所谓) 7.绘制出直线 8.寻找与定位上下左右是条直线 9.拟合四条直线方程 1

    2024年02月06日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包