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不规范的日期字符串处理类
Jun 10 Python
Python编程实现蚁群算法详解
Nov 13 Python
Python利用字典将两个通讯录文本合并为一个文本实例
Jan 16 Python
python实现SOM算法
Feb 23 Python
Python3实现带附件的定时发送邮件功能
Dec 22 Python
Django中反向生成models.py的实例讲解
May 30 Python
ubuntu16.04制作vim和python3的开发环境
Sep 23 Python
bluepy 一款python封装的BLE利器简单介绍
Jun 25 Python
python脚本实现音频m4a格式转成MP3格式的实例代码
Oct 09 Python
Python 复平面绘图实例
Nov 21 Python
Python  word实现读取及导出代码解析
Jul 09 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
Dec 14 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
环境会对咖啡种植有什么影响
2021/03/03 咖啡文化
javascript 支持ie和firefox杰奇翻页函数
2008/07/22 Javascript
HTML代码中标签的全部属性 中文注释说明
2009/03/26 Javascript
jquery 最简单的属性菜单
2009/10/08 Javascript
JSQL SQLProxy 的 php 版本代码
2010/05/05 Javascript
基于javascript实现全屏漂浮广告
2016/03/31 Javascript
HTML5基于Tomcat 7.0实现WebSocket连接并实现简单的实时聊天
2016/10/31 Javascript
AngularJS控制器controller给模型数据赋初始值的方法
2017/01/04 Javascript
vuejs父子组件通信的问题
2017/01/11 Javascript
JavaScript Date 知识浅析
2017/01/29 Javascript
Ionic学习日记实现验证码倒计时
2018/02/08 Javascript
小程序视频列表中视频的播放与停止的示例代码
2018/07/20 Javascript
微信小程序实现跳转的几种方式总结(推荐)
2019/04/24 Javascript
Vue切换组件实现返回后不重置数据,保留历史设置操作
2020/07/21 Javascript
OpenLayer3自定义测量控件MeasureTool
2020/09/28 Javascript
Javascript实现贪吃蛇小游戏(含详细注释)
2020/10/23 Javascript
jQuery实现动态向上滚动
2020/12/21 jQuery
JS代码实现页面切换效果
2021/01/10 Javascript
[01:14]DOTA2亚洲邀请赛 ShowOpen
2015/02/07 DOTA
Python的词法分析与语法分析
2013/05/18 Python
Python扫描IP段查看指定端口是否开放的方法
2015/06/09 Python
基于循环神经网络(RNN)实现影评情感分类
2018/03/26 Python
浅谈Python traceback的优雅处理
2018/08/31 Python
pytorch 使用单个GPU与多个GPU进行训练与测试的方法
2019/08/19 Python
详解django中Template语言
2020/02/22 Python
对Python中 \r, \n, \r\n的彻底理解
2020/03/06 Python
解析Python 偏函数用法全方位实现
2020/06/26 Python
Python用K-means聚类算法进行客户分群的实现
2020/08/23 Python
HTML5实现自带进度条和滑块滑杆效果
2018/04/17 HTML / CSS
小学生期末自我鉴定
2014/01/19 职场文书
元宵节主持词
2014/03/25 职场文书
电子商务专业求职信范文
2015/03/19 职场文书
跳高加油稿
2015/07/21 职场文书
2015年幼师个人工作总结
2015/10/15 职场文书
2016年全国助残日活动总结
2016/04/01 职场文书
2019年大学生暑期社会实践调查报告模板
2019/11/07 职场文书