Мне нужно получить значения пикселей для каждой яркости пикселей (0-255) - PullRequest
0 голосов
/ 13 февраля 2019

Описание:

Я использую 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 Все это было сделано в командной строке 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

Куда ушел результат?Это отсутствие отступов?

Спасибо

1 Ответ

0 голосов
/ 14 февраля 2019

Я наконец-то понял, что вы хотите - это гистограмма!К счастью, это просто, поэтому начнем с этого мультфильма:

enter image description here

#!/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 - синие компоненты.

...