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 11 Python
详解Python中的Descriptor描述符类
Jun 14 Python
Python 中的with关键字使用详解
Sep 11 Python
解决python3 urllib中urlopen报错的问题
Mar 25 Python
如何使用 Pylint 来规范 Python 代码风格(来自IBM)
Apr 06 Python
在PyCharm环境中使用Jupyter Notebook的两种方法总结
May 24 Python
Python使用crontab模块设置和清除定时任务操作详解
Apr 09 Python
详解PyTorch中Tensor的高阶操作
Aug 18 Python
python文件绝对路径写法介绍(windows)
Dec 25 Python
Python paramiko使用方法代码汇总
Nov 20 Python
python3中数组逆序输出方法
Dec 01 Python
python开发实时可视化仪表盘的示例
May 07 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的输入输出流
2007/02/14 PHP
FCKeditor添加自定义按钮
2008/03/27 PHP
Joomla开启SEF的方法
2016/05/04 PHP
php获取ip及网址的简单方法(必看)
2017/04/01 PHP
PHP简单实现遍历目录下特定文件的方法小结
2017/05/22 PHP
Yii框架的布局文件实例分析
2019/09/04 PHP
JQuery的Alert消息框插件使用介绍
2010/10/09 Javascript
完美解决AJAX跨域问题
2013/11/01 Javascript
JavaScript的常见兼容问题及相关解决方法(chrome/IE/firefox)
2013/12/31 Javascript
JavaScript数字和字符串转换示例
2014/03/26 Javascript
js识别不同浏览器基于userAgent做判断
2014/07/29 Javascript
使用js复制链接中的部分文字的方法
2015/07/30 Javascript
使用 JavaScript 进行函数式编程 (一) 翻译
2015/10/02 Javascript
JQuery EasyUI的使用
2016/02/24 Javascript
15位和18位身份证JS校验的简单实例
2016/07/18 Javascript
jQuery实现的简单拖拽功能示例
2016/09/13 Javascript
JS 60秒后重新发送验证码的实例讲解
2017/07/26 Javascript
JavaScript实现各种排序的代码详解
2017/08/28 Javascript
JavaScript实现的九种排序算法
2019/03/04 Javascript
jQuery实现滑动星星评分效果(每日分享)
2019/11/13 jQuery
原生js实现下拉选项卡
2019/11/27 Javascript
Python类如何定义私有变量
2020/02/03 Python
Python3.9又更新了:dict内置新功能
2020/02/28 Python
pytorch 多分类问题,计算百分比操作
2020/07/09 Python
python爬虫beautifulsoup解析html方法
2020/12/07 Python
Django模板报TemplateDoesNotExist异常(亲测可行)
2020/12/18 Python
HTML5标签嵌套规则详解【必看】
2016/04/26 HTML / CSS
奢华时尚的创新平台:Baltini
2020/10/03 全球购物
编程实现当输入某产品代码则打印出该产品记录的功能
2014/05/03 面试题
linux面试题参考答案(8)
2016/04/19 面试题
大学生文员专业个人求职信范文
2014/01/05 职场文书
2013年研究生毕业感言
2014/02/06 职场文书
勤奋学习演讲稿
2014/05/10 职场文书
2014年班级工作总结
2014/11/14 职场文书
青年文明号申报材料
2014/12/23 职场文书
预备党员介绍人意见
2015/06/01 职场文书