如何使用PIL更改像素的颜色?

时间:2019-01-11 09:04:17

标签: python image colors python-imaging-library pixel

我试图使用this问题来更改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 :(得分:1)

您是否必须使用PIL?如果没有,请考虑使用OpenCV(cv2)更改图像的特定像素。 在opencv中将(0,0)像素更改为(200,200,200)的代码如下所示:

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到{{ 1}}(包括)按255的顺序而不是BGR

有关OpenCV教程,包括安装,请参见this