Итак, я пытаюсь воспроизвести «дизеринг Флойда-Стейнберга» на изображении в python, и пока что это то, что у меня есть:
import cv2
# returns an array with rgb values of all pixels
x_img = cv2.imread("lenac.tif")
# returns an image with the rgb values turned to black and white
x_img_g = cv2.cvtColor(x_img,cv2.COLOR_BGR2GRAY)
def dither(img):
col = len(img[0])
li = len(img)
print(col)
print(li)
for i in range (li):
for j in range(col):
oldpixel = img[li][col]
newpixel = quantificacao(oldpixel)
print(newpixel)
print(dither(x_img_g))
Так что в основном метод не закончен, и единственное, что он делает, - это прохождение через каждый пиксель черно-белой версии изображения «lena.tif» (очень известное в манипулировании изображениями) и применение к ним метода, называемого «quantificacao», не имеет отношения к вопросу.
Изображение: 512 x 512
Все идет хорошо, пока в определенной точке не появится следующая ошибка:
oldpixel = img[li][col]
IndexError: index 512 is out of bounds for axis 0 with size 512
Оба переменные col
и li
, как показано, равны 512, поэтому for cycle
должен go от 0 до 511, верно?
Следовательно, индексирование только до 511
I ' Я в некотором роде заблудился и был бы чрезвычайно осторожен, если бы кто-то мог мне помочь