Я пытаюсь выполнить некоторые математические операции на одиночных пикселях с помощью PIL.PIL: пиксельные математические свойства
Из Интернета я мог загрузить изображение в 2d массив, как это:
from PIL import Image
img_filename = "CNH.JPG"
im = Image.open(img_filename)
im = im.convert('L')
pix = im.load()
Я сделал некоторые изменения в единый aftwards значение пикселя, но когда я пытаюсь сделать разделение (даже если она возвращает целое число), он просто округляется до 0 или 255:
>>> i=30
>>> j=45
>>> pix[i,j]
37
>>> pix[i,j]+5
42
>>> pix[i,j]*2
84
>>> pix[i,j]/2
0
>>> pix[i,j]*2
0
кажется, проблема у меня есть, чтобы сделать с делениями.
Моя цель - нормализовать значения моих пикселей для плавания в диапазоне (0,1) вместо (0,255). Поэтому я бы просто разделил каждое значение пикселя на 255.
Все, что мне не хватает на языке Python?
Кроме того, для будущих работ я планирую реализовать некоторые алгоритмы извлечения и классификации признаков в Python. Является ли PIL правильным пакетом для этой цели?
Пример кода:
from PIL import Image
img_filename = "yourimage.JPG"
im = Image.open(img_filename)
im = im.convert('L')
pix = im.load()
i=30
j=45
print(pix[i,j])
pix[i,j] = pix[i,j]+5
print(pix[i,j])
pix[i,j] = pix[i,j]*2
print(pix[i,j])
pix[i,j] = float(pix[i,j]/2)
print(pix[i,j])
pix[i,j] = pix[i,j]*2
print(pix[i,j])
Я не могу воспроизвести вашу проблему. Доступна ли загрузка изображения? – Matt
Я тоже не могу воспроизвести это. Пожалуйста, разместите изображение. – nwk
Вы уверены, что ваша проблема не является [целочисленным делением в Python 2.X] (http://stackoverflow.com/questions/1267869/how-can-i-force-division-to-be-floating-point- в-питон)? –