Как изменить цвет пикселя с помощью PIL? - PullRequest
0 голосов
/ 11 января 2019

Я пытался изменить пиксель изображения в python, используя этот вопрос. Если mode равно 0, первый пиксель в верхнем правом углу изображения становится серым (# C8C8C8). Но это не меняется. Недостаточно документации о draw.point(). В чем проблема с этим кодом?

import random
from PIL import Image, ImageDraw
mode = 0
image = Image.open("dom.jpg") 
draw = ImageDraw.Draw(image)  
width = image.size[0]  
height = image.size[1]      
pix = image.load()
string = "kod"
n = 0
if (mode == 0):
    draw.point((0, 0), (200, 200, 200))
if(mode == 1):
    print(pix[0,0][0])
image.save("dom.jpg", "JPEG")
del draw

1 Ответ

0 голосов
/ 11 января 2019

Является ли использование PIL обязательным в вашем случае? Если нет, то подумайте об использовании OpenCV (cv2) для изменения определенных пикселей изображения. Код, который изменяет (0,0) пиксель на (200,200,200), выглядит следующим образом в opencv:

import cv2
img = cv2.imread('yourimage.jpg')
height = img.shape[0]
width = img.shape[1]
img[0][0] = [200,200,200]
cv2.imwrite('newimage.bmp',img)

Обратите внимание, что этот код сохраняет изображение в формате .bmp - cv2 также может записывать .jpg изображения, но, поскольку jpg обычно имеет формат с потерями, некоторые мелкие детали могут быть потеряны. Имейте в виду, что в cv2 [0][0] находится левый верхний угол, и первое значение является координатой y пикселя, а второе - координатой x, кроме цвета - три значения от 0 до 255 (включительно) в BGR заказ, а не RGB.

Инструкции по OpenCV, включая установку, см. this .

...