说明:
我正在使用python 2.7,并且安装了PIL,pip,pip-9.0.1-py2.7.egg-info和Pillow-4.1.1-py2.7.egg-info软件包
我正在尝试让python分析图像并输出像素0-255及其相关的像素值,最好以直方图或列表的形式。
寻找结果:
0 5
1 6
2 8
3 7
...
...
...
尝试:
我尝试卸载pil,失败 我已经安装了Image软件包 在卸载pil之前,我无法安装Pillow 所有这些都是在Python命令行上完成的
代码尝试1:
from PIL import Image, ImageFile
ImageFile.LOAD_TRUNCATED_IMAGES = True
Image.open('C:\\Users\\tsamimi\\Documents\\BasilIce\\FreqVal\\06.953_UTC-clear basil ice.jpg').load()
im = Image.open('C:\\Users\\tsamimi\\Documents\\BasilIce\\FreqVal\\06.953_UTC-clear basil ice.jpg', 'r')
pix_val = list(im.getdata())
pix_val_flat = [x for sets in pix_val for x in sets]
代码尝试2:
from PIL import Image, ImageFile
ImageFile.LOAD_TRUNCATED_IMAGES = True
Image.open('C:\\Users\\abbot\\Documents\\BasilIce\\FreqVal\\06.953_UTC-clear basil ice.jpg').load()
im = Image.open('C:\\Users\\abbot\\Documents\\BasilIce\\FreqVal\\06.953_UTC-clear basil ice.jpg', 'r')
width, height = im.size
pixel_values = list(im.getdata())
两个代码1,2的输出:Process finished with exit code 0
结果去哪里了?缺少缩进吗?
谢谢
答案 0 :(得分:1)
我终于找到了您想要的东西-这是一个直方图!幸运的是,这很简单,所以从这幅漫画开始:
#!/usr/bin/env python3
from PIL import Image
# Load image as greyscale and calculate histogram
im = Image.open('cartoon.jpg').convert('L')
h = im.histogram()
# Print histogram
for idx, val in enumerate(h):
print(idx,val)
示例输出
0 41513
1 2362
2 1323
3 1057
4 889
5 780
6 887
7 454
...
...
249 44
250 65
251 119
252 179
253 275
254 246
255 20
请注意,如果您想要RGB图像的直方图,请将第三行更改为:
im = Image.open('cartoon.jpg')
然后您将获得768个值的打印内容,前256个是红色部分,然后下一个256个是绿色部分,最后256个是蓝色部分。