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


Posted in Python onJune 04, 2020

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)

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

输出结果:

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实现类继承实例
Jul 04 Python
Python的Django框架中的数据过滤功能
Jul 17 Python
Python实现的递归神经网络简单示例
Aug 11 Python
Python读取Word(.docx)正文信息的方法
Mar 15 Python
python爬取哈尔滨天气信息
Jul 14 Python
Python实现矩阵相乘的三种方法小结
Jul 26 Python
Centos部署django服务nginx+uwsgi的方法
Jan 02 Python
浅谈Python爬虫基本套路
Mar 25 Python
python3安装crypto出错及解决方法
Jul 30 Python
Python装饰器实现方法及应用场景详解
Mar 26 Python
jupyter实现重新加载模块
Apr 16 Python
Python虚拟环境的创建和包下载过程分析
Jun 19 Python
完美解决ARIMA模型中plot_acf画不出图的问题
Jun 04 #Python
Python使用Matlab命令过程解析
Jun 04 #Python
Python flask框架端口失效解决方案
Jun 04 #Python
Python实现列表中非负数保留,负数转化为指定的数值方式
Jun 04 #Python
Python新手学习装饰器
Jun 04 #Python
基于python 取余问题(%)详解
Jun 03 #Python
Python中关于logging模块的学习笔记
Jun 03 #Python
You might like
php smarty 二级分类代码和模版循环例子
2011/06/16 PHP
php实现将字符串按照指定距离进行分割的方法
2015/03/14 PHP
PHP实现的简单异常处理类示例
2017/05/04 PHP
漂亮的widgets,支持换肤和后期开发新皮肤(2007-4-27已更新1.7alpha)
2007/04/27 Javascript
js弹出层(jQuery插件形式附带reLoad功能)
2013/04/12 Javascript
jquery插件开发注意事项小结
2013/06/04 Javascript
改变隐藏的input中value的值代码
2013/12/30 Javascript
jquery实现的省市区三级联动
2015/04/02 Javascript
JavaScript中this的9种应用场景及三种复合应用场景
2015/09/12 Javascript
js导出excel文件的简洁方法(推荐)
2016/11/02 Javascript
详解nodejs微信公众号开发——6.自定义菜单
2017/04/13 NodeJs
详解angular中的作用域及继承
2017/05/31 Javascript
vue proxyTable 接口跨域请求调试的示例
2017/09/12 Javascript
详解Vue-cli代理解决跨域问题
2017/09/27 Javascript
详解webpack babel的配置
2018/01/09 Javascript
微信小程序三级联动选择器使用方法
2020/05/19 Javascript
JavaScript中工厂函数与构造函数示例详解
2019/05/06 Javascript
vue fetch中的.then()的正确使用方法
2020/04/17 Javascript
vue中可编辑树状表格的实现代码
2020/10/31 Javascript
Python批量创建迅雷任务及创建多个文件
2016/02/13 Python
Python csv文件的读写操作实例详解
2019/11/19 Python
Django异步任务线程池实现原理
2019/12/17 Python
Python字符串中删除特定字符的方法
2020/01/15 Python
浅析python 字典嵌套
2020/09/29 Python
浅析关于Keras的安装(pycharm)和初步理解
2020/10/23 Python
Python+logging输出到屏幕将log日志写入文件
2020/11/11 Python
html2canvas截图空白问题的解决
2020/03/24 HTML / CSS
浅析HTML5 Landmark
2020/09/11 HTML / CSS
乌克兰电子产品和家用电器购物网站:TOUCH
2019/08/09 全球购物
美国在线面料商店:Fashion Fabrics Club
2020/01/31 全球购物
编写一个 C 函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的
2015/07/23 面试题
结构工程个人自荐信范文
2013/11/30 职场文书
本科毕业生专业自荐书范文
2014/02/05 职场文书
挂靠协议书范本
2014/04/22 职场文书
刑事代理授权委托书
2014/09/17 职场文书
2015年暑期社会实践活动总结
2015/03/27 职场文书