- 计算灰度图的累计直方图
- 选择图片
- 将图片变为灰度图
- 获取灰度图的像素值
- 统计灰度值出现的次数,转化为直方图
建议选择尺寸大小为500以内的图片,避免程序运算量过大,等待时间过长。
插入图片时,可以在图片属性里复制出图片的位置,通过Image包来导入图片。
小编这里图片格式为jfif,可以根据自己的图片格式修改。“r”是起防止字符转义的作用,如果路径中出现“t”的话,不加"r”,“t”就会被转义,而加了“r”之后“t”就能保留原有的样子。
方法一:可以调用一个包,可以直接输出灰度图像。
方法二:种公式法:gray=0.2989×r + 0.5870×g + 0.1140×b。
任何颜色都有红、绿、蓝三原色组成,假如原来某点的颜色为RGB(R,G,B),那么,我们可以通过下面几种方法,将其转换为灰度:
1.浮点算法:Gray=R×0.3+G×0.59+B×0.11
2.整数方法:Gray=(R×30+G×59+B×11)/100
3.移位方法:Gray =(R×28+G×151+B×77)>>8;
4.平均值法:Gray=(R+G+B)/3;
通过公式法求灰度图容易报错,小编总结了几个原因:①导入图片时所用的包与获取图片像素点用的包不一样,导致RGB的顺序改变,需要先把RGB的顺序做统一化。②图片的尺寸容易混淆,导致列表或者数组的维度不一样。
如果没有特别说明不可以调用包或者模块,建议直接调用包或者模块来得到图片的灰度图。
大家可以搜索这篇文章:
python:遍历读取图像灰度值,并存入一个新数组中。作者:1226km。
这里要说明一下,对于一张本身就是灰度图像(8位灰度图像)来说,它的像素值就是它的灰度值。如果是一张彩色图像,则它的灰度值需要经过函数映射来得到。
首先统计出灰度值出现的次数,相当于统计一个列表中每个元素出现的次数。这里有四种方法,大家可以参考文章:
Python统计一个列表中每个元素出现的次数。四种方法,总有一款适合你。作者:三尺秋水一点飞鸿。
小编采用的是for循环的方法,最后以字典的形式输出。
然后使用dict.key()以及dict.values()语句得到字典的键和值。将其转化为列表的形式。
**这里需要注意输出直方图时,x和y都需要使用list形式,小编使用数组形式时报错了__
最后附上总代码:
参考文章地址:
[1]https://blog.csdn.net/fwt1226/article/details/109582080?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2aggregatepagefirst_rank_ecpm_v1~rank_aggregation-5-109582080.pc_agg_rank_aggregation&utm_term=python%E8%AF%BB%E5%8F%96%E5%9B%BE%E7%89%87%E7%81%B0%E5%BA%A6%E5%80%BC&spm=1000.2123.3001.4430
[2]https://blog.csdn.net/qq_42467563/article/details/86182266



