python 图像判断,清晰度(明暗),彩色与黑白实例

 更新时间:2020年06月04日 09:22:22   作者:风泽茹岚  
这篇文章主要介绍了python 图像判断,清晰度(明暗),彩色与黑白实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

1,判断图像清晰度,明暗,

原理,Laplacian算法。偏暗的图片,二阶导数小,区域变化小;偏亮的图片,二阶导数大,区域变化快。

import cv2
 
def getImageVar(imgPath):
  image = cv2.imread(imgPath)
  img2gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
  imageVar = cv2.Laplacian(img2gray, cv2.CV_64F).var()
  return imageVar
 
imageVar = getImageVar("./lena.jpg")
print(imageVar)

输出结果:

2119.0913581351697

2,判断黑白或彩色图片

原理,通道变化

def is_color_image(url):
  im=Image.open(url)
  pix=im.convert('RGB')
  width=im.size[0]
  height=im.size[1]
  oimage_color_type="Grey Image"
  is_color=[]
  for x in range(width):
    for y in range(height):
      r,g,b=pix.getpixel((x,y))
      r=int(r)
      g=int(g)
      b=int(b)
      if (r==g) and (g==b):
        pass
      else:
        oimage_color_type='Color Image'
  return oimage_color_type

补充知识:求图片的平均亮度

图像相关开发中,有时我们需要知道和了解图片的 亮度 这一信息,例如判断图片是否曝光严重过度或者太黑什么都看不清。

那么怎么去获取到图片的 平均亮度 这一信息呢?

一、YUV 图片

一般相机的原始数据类型就是 YUV 格式,这种格式下很容易求得亮度,因为它的 Y 通道就是亮度通道,我们只需要求得 Y 通道的平均值就可以了。

由于 YUV 图片前 width * height 个字节存放的就是 Y 的值,所以其均值计算如下:

void calculate_average_brightness(const unsigned char* image, const int width, const int height, double* brightness) {
  int length = width * height;
  double sum;
  for (int i = 0; i < length; ++i) {
    sum += image[i];
  }
  brightness = sum / length; // brightness value: [0, 255]
}

注意这样计算得到的亮度值范围为 0~255,如果要归一化的话,再除以 255 即可。

二、RGB 图片

RGB 图片的计算理论和上述差不多,不过我们需要先求得 R、G、B 三个通道的均值。

RGB 图片的亮度计算公式为:

Y = 0.299 * R + 0.587 * G + 0.114 * B ​

以上这篇python 图像判断,清晰度(明暗),彩色与黑白实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python中如何创建和运行异步任务详解

    Python中如何创建和运行异步任务详解

    这篇文章主要为大家介绍了Python中如何创建和运行异步任务详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Python守护进程实现过程详解

    Python守护进程实现过程详解

    这篇文章主要介绍了Python守护进程实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • Python+kivy BoxLayout布局示例代码详解

    Python+kivy BoxLayout布局示例代码详解

    这篇文章主要介绍了Python+kivy BoxLayout布局的示例代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • Python实现把类当做字典来访问

    Python实现把类当做字典来访问

    今天小编就为大家分享一篇Python实现把类当做字典来访问,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • django rest framework 自定义返回方式

    django rest framework 自定义返回方式

    这篇文章主要介绍了django rest framework 自定义返回方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • Python ARP扫描与欺骗实现全程详解

    Python ARP扫描与欺骗实现全程详解

    这篇文章主要介绍了Python 实现ARP扫描与欺骗,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-10-10
  • python模块itsdangerous简单介绍

    python模块itsdangerous简单介绍

    这篇文章主要介绍了python模块itsdangerous简单介绍,本文通过案例分析给大家详细讲解,对python模块itsdangerous相关知识感兴趣的朋友一起看看吧
    2022-11-11
  •  分享4款Python 自动数据分析神器

     分享4款Python 自动数据分析神器

    这篇文章主要给大家分享的是4款Python 自动数据分析神器,我给大家分享 4 款常用的EDA工具,它们可以自动产出统计数据和图表,为我们节省大量时间,需要的朋友可以参考一下
    2022-03-03
  • Python实现XGBoost算法的应用实战

    Python实现XGBoost算法的应用实战

    XGBoost(Extreme Gradient Boosting)是一种高效且广泛使用的集成学习算法,它属于梯度提升树(GBDT)模型的一种改进,本文将结合实际案例,详细介绍如何在Python中使用XGBoost算法进行模型训练和预测,需要的朋友可以参考下
    2024-08-08
  • Python计算三角函数之asin()方法的使用

    Python计算三角函数之asin()方法的使用

    这篇文章主要介绍了Python计算三角函数之asin()方法的使用,是Python入门的基础知识,需要的朋友可以参考下
    2015-05-05

最新评论