python - 如何使用 PIL 更改像素的颜色?
问题描述
我试图使用这个问题在 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
解决方案
在你的情况下使用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 通常是有损格式,因此可能会丢失一些小细节。请记住,incv2
[0][0]
是左上角,第一个值是像素的 y 坐标,而第二个是 x 坐标,另外 color 是按顺序从0
to 255
(包括)的三个值,BGR
而不是RGB
.
有关 OpenCV 教程,包括安装,请参阅此.
推荐阅读
- xamarin - Xamarin 表单触摸操作 HitTest 总是返回 fasle
- ruby-on-rails - 如何在 RTL YAML 文件中为 Ruby on Rails 传递变量
- php - PHP - 只允许购物车中的一个产品类别?
- pandas - Groupby依靠熊猫中的唯一日期时间
- python - 如何在numpy中通过quasi-mont carlo(QCM)技术生成高维高斯向量
- apache-poi - 尝试使用带有 Serenity 和 Cucumber 的 ApachePOI 打开 Excel
- python - 无法控制不透明度的值
- python - 就地改组列表的一部分
- lua - 打印存储在 LUA 变量中的列表
- android - adb pull 不创建拉文件夹