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中使用copy模块实现列表(list)拷贝
Apr 14 Python
python简单猜数游戏实例
Jul 09 Python
matplotlib作图添加表格实例代码
Jan 23 Python
详解如何用django实现redirect的几种方法总结
Nov 22 Python
Python可变和不可变、类的私有属性实例分析
May 31 Python
ipython和python区别详解
Jun 26 Python
对django 模型 unique together的示例讲解
Aug 06 Python
Python编程中类与类的关系详解
Aug 08 Python
对Django 中request.get和request.post的区别详解
Aug 12 Python
python 模拟创建seafile 目录操作示例
Sep 26 Python
Python多线程爬取豆瓣影评API接口
Oct 22 Python
如何使用python实现模拟鼠标点击
Jan 06 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对象转换为数组函数(递归方法)
2012/02/04 PHP
PHP取整数函数常用的四种方法小结
2012/07/05 PHP
php去除换行符的方法小结(PHP_EOL变量的使用)
2013/02/16 PHP
php 判断是否是中文/英文/数字示例代码
2013/09/30 PHP
PHP实现的购物车类实例
2015/06/17 PHP
php遍历、读取文件夹中图片并分页显示图片的方法
2016/11/15 PHP
JavaScript学习笔记之获取当前目录的实现代码
2010/12/14 Javascript
读jQuery之九 一些瑕疵说明
2011/06/21 Javascript
JS获取计算机mac地址以及IP的实现方法
2014/01/08 Javascript
jQuery中document与window以及load与ready 区别详解
2014/12/29 Javascript
jQuery插件Validation快速完成表单验证的方式
2016/07/28 Javascript
引用jquery框架后出错的解决方法
2016/08/09 Javascript
网页中右键功能的实现方法之contextMenu的使用
2017/02/20 Javascript
vue2.0 axios前后端数据处理实例代码
2017/06/30 Javascript
node.js + socket.io 实现点对点随机匹配聊天
2017/06/30 Javascript
nodejs async异步常用函数总结(推荐)
2017/11/17 NodeJs
用ES6的class模仿Vue写一个双向绑定的示例代码
2018/04/20 Javascript
详解小程序缓存插件(mrc)
2018/08/17 Javascript
Python实现计算文件夹下.h和.cpp文件的总行数
2015/04/23 Python
python机器学习实战之树回归详解
2017/12/20 Python
python如何去除字符串中不想要的字符
2020/07/05 Python
python实现人人自动回复、抢沙发功能
2018/06/08 Python
Python中浅拷贝copy与深拷贝deepcopy的简单理解
2018/10/26 Python
python-opencv颜色提取分割方法
2018/12/08 Python
django celery redis使用具体实践
2019/04/08 Python
Python定时任务随机时间执行的实现方法
2019/08/14 Python
用python写一个带有gui界面的密码生成器
2020/11/06 Python
CSS3的文字阴影—text-shadow的使用方法
2012/12/25 HTML / CSS
HTML5录音实践总结(Preact)
2020/05/07 HTML / CSS
比利时买床:Beter Bed
2017/12/06 全球购物
印度电子产品购物网站:Vijay Sales
2021/02/16 全球购物
C#中有没有运算符重载?能否使用指针?
2014/05/05 面试题
会计与出纳自荐书范文
2014/03/16 职场文书
集体生日活动方案
2014/08/18 职场文书
个人四风对照检查材料
2014/09/26 职场文书
放弃遗产继承公证书
2015/01/26 职场文书