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中的floor()方法
May 15 Python
在Mac OS上使用mod_wsgi连接Python与Apache服务器
Dec 24 Python
简单实现python进度条脚本
Dec 18 Python
wxPython+Matplotlib绘制折线图表
Nov 19 Python
python isinstance函数用法详解
Feb 13 Python
详解django使用include无法跳转的解决方法
Mar 19 Python
Python批量安装卸载1000个apk的方法
Apr 10 Python
Python函数参数分类原理详解
May 28 Python
Idea安装python显示无SDK问题解决方案
Aug 12 Python
python 无损批量压缩图片(支持保留图片信息)的示例
Sep 22 Python
python 从list中随机取值的方法
Nov 16 Python
详解如何用Python实现感知器算法
Jun 18 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中使用cookie来保存用户登录信息的实现代码
2012/03/08 PHP
深入解析php中的foreach函数
2013/08/31 PHP
php实现建立多层级目录的方法
2014/07/19 PHP
PHP内存使用情况如何获取
2015/10/10 PHP
PHP面试题之文件目录操作
2015/10/15 PHP
jquery getScript动态加载JS方法改进详解
2012/11/15 Javascript
js判断选择时间不能小于当前时间的示例代码
2013/09/24 Javascript
js字母大小写转换实现方法总结
2013/11/13 Javascript
JS实现网页表格自动变大缩小的方法
2015/03/09 Javascript
基于jquery实现人物头像跟随鼠标转动
2015/08/23 Javascript
JavaScript实现带缓冲效果的随屏滚动漂浮广告代码
2015/11/06 Javascript
javascript读取文本节点方法小结
2016/12/15 Javascript
JavaScript实现图像模糊化的方法实例
2017/01/15 Javascript
JS按条件 serialize() 对应标签的使用方法
2017/07/24 Javascript
在 Linux/Unix 中不重启 Vim 而重新加载 .vimrc 文件的流程
2018/03/21 Javascript
使用eslint和githooks统一前端风格的技巧
2020/07/29 Javascript
Vue中引入svg图标的两种方式
2021/01/14 Vue.js
javascript实现倒计时关闭广告
2021/02/09 Javascript
Python和Ruby中each循环引用变量问题(一个隐秘BUG?)
2014/06/04 Python
python获取从命令行输入数字的方法
2015/04/29 Python
使用C#配合ArcGIS Engine进行地理信息系统开发
2016/02/19 Python
全面了解python中的类,对象,方法,属性
2016/09/11 Python
Python lambda函数基本用法实例分析
2018/03/16 Python
Python中捕获键盘的方式详解
2019/03/28 Python
Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】
2019/10/12 Python
Python阶乘求和的代码详解
2020/02/14 Python
python Canny边缘检测算法的实现
2020/04/24 Python
Python叠加矩形框图层2种方法及效果
2020/06/18 Python
2013年入党人员的自我鉴定
2013/10/25 职场文书
农村婚礼证婚词
2014/01/08 职场文书
大学生学习自我评价
2014/01/13 职场文书
英语简历自我评价
2014/01/26 职场文书
优秀团员事迹材料2000字
2014/08/20 职场文书
mysql 8.0.24 安装配置方法图文教程
2021/05/12 MySQL
HTML基础详解(下)
2021/10/16 HTML / CSS
sentinel支持的redis高可用集群配置详解
2022/04/01 Redis