gpt4 book ai didi

python - 使用 PIL 或 Numpy 数组,如何从图像中删除整行?

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

我想知道如何从图像中删除整行,最好是根据行的颜色?

示例:我有一个高度为 5 像素的图像,顶部两行和底部两行是白色的,中间一行是黑色的。我想知道如何让 PIL 识别这一行黑色像素,然后删除整行并保存新图像。

我对 python 有一些了解,到目前为止,我一直在通过列出“getdata”的结果来编辑我的图像,因此任何使用伪代码的答案都可能足够了。谢谢。

最佳答案

我给你写了下面的代码,它删除了全黑的每一行。我用 else clause for 循环将在循环被中断退出时执行。

from PIL import Image

def find_rows_with_color(pixels, width, height, color):
rows_found=[]
for y in xrange(height):
for x in xrange(width):
if pixels[x, y] != color:
break
else:
rows_found.append(y)
return rows_found

old_im = Image.open("path/to/old/image.png")
if old_im.mode != 'RGB':
old_im = old_im.convert('RGB')
pixels = old_im.load()
width, height = old_im.size[0], old_im.size[1]
rows_to_remove = find_rows_with_color(pixels, width, height, (0, 0, 0)) #Remove black rows
new_im = Image.new('RGB', (width, height - len(rows_to_remove)))
pixels_new = new_im.load()
rows_removed = 0
for y in xrange(old_im.size[1]):
if y not in rows_to_remove:
for x in xrange(new_im.size[0]):
pixels_new[x, y - rows_removed] = pixels[x, y]
else:
rows_removed += 1
new_im.save("path/to/new/image.png")

如果你有问题就问:)

关于python - 使用 PIL 或 Numpy 数组,如何从图像中删除整行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12770218/

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