我试图使用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
答案 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。