gpt4 book ai didi

python - 函数正好接受 1 个参数(给定 3 个)?

转载 作者:太空宇宙 更新时间:2023-11-03 22:18:29 25 4
gpt4 key购买 nike

我正在尝试将图像中的像素值更改为列表中最接近的值,但我不明白为什么我不能更改像素值。

我试过将图像转换为 RGB 或 RGBA,但出于某种原因,有时需要 3 个参数,有时需要 4 个参数。

im = Image.open('rick.png') # Can be many different formats.
rgb_im = im.convert('RGBA')
pix = im.load()

height, width = im.size
image = ImageGrab.grab()

COLORS = (
(0, 0, 0),
(127, 127, 127),
(136, 0, 21),
(237, 28, 36),
(255, 127, 39),
)
def closest_color(r, g, b, COLORS):
min_diff = 9999
answer = None
for color in COLORS:
cr, cg, cb = color
color_diff = abs(r - cr) + abs(g - cg) + abs(b - cb)
if color_diff < min_diff:
answer = color
min_diff = color_diff
return answer


def read_color(height,width, COLORS, pix):
for x in range(height):
for y in range(width):
r,g,b,a = rgb_im.getpixel((x,y))
color = closest_color(r, g, b, COLORS) # color is returned as tuple
pix[x,y] = color # Changing color value? -Here i get the error-



read_color(height,width, COLORS, pix)
im.save('try.png')

即使 closest_value 返回一个参数,我也一直收到此错误,我不知道为什么,感谢您的帮助!

COLORS - 是一个颜色列表,我测试了 closest_color() 函数并且效果很好错误信息:

'Exception has occurred: TypeError
function takes exactly 1 argument (3 given)
File "C:\Users\user\Desktop\תוכנות שעשיתי\program.py", line 133, in
read_color
pix[x,y] = color
File "C:\Users\user\Desktop\תוכנות שעשיתי\program.py", line 137, in
<module>
read_color(height,width, COLORS, pix)'

编辑!

显然,代码适用于大多数图像,但不适用于所有图像,例如,此图像不起作用,我收到此错误 enter image description here

最佳答案

从 RGBA 转换后的图像中读取像素但在原始的可能不是 RGBA 图像中设置像素是不一致的。修复使您的代码可以处理示例图像的问题。

pix = rgb_im.load()

关于python - 函数正好接受 1 个参数(给定 3 个)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54253317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com