从图像中去除绿屏并使其透明
Remove green screen from a image and make it transparent
我找到了解决这个问题的方法,但是背景不透明,是黑色的,我不知道如何让它透明。
这是我的代码:
from PIL import Image
image = Image.open('pic.jpg')
image.show()
image_data = image.load()
height,width = image.size
for loop1 in range(height):
for loop2 in range(width):
r,g,b = image_data[loop1,loop2]
image_data[loop1,loop2] = r,0,b
image.save('changed.png')
如果您的背景由一种颜色组成,那么您可以通过以下方式将其替换为透明的:
from PIL import Image
img = Image.open('pic.png')
rgba = img.convert('RGBA')
data = rgba.getdata()
green_rgb = (0, 128, 0) # change it to your exact bg color
new_data = [item if item[:-1] != green_rgb else (255, 255, 255, 0) for item in data]
rgba.putdata(new_data)
rgba.save('changed.png', 'PNG')
但是,如果您的背景有不同的深浅,那么您将不得不进行额外的检查并确定可接受的绿色深浅的边界。
我找到了解决这个问题的方法,但是背景不透明,是黑色的,我不知道如何让它透明。
这是我的代码:
from PIL import Image
image = Image.open('pic.jpg')
image.show()
image_data = image.load()
height,width = image.size
for loop1 in range(height):
for loop2 in range(width):
r,g,b = image_data[loop1,loop2]
image_data[loop1,loop2] = r,0,b
image.save('changed.png')
如果您的背景由一种颜色组成,那么您可以通过以下方式将其替换为透明的:
from PIL import Image
img = Image.open('pic.png')
rgba = img.convert('RGBA')
data = rgba.getdata()
green_rgb = (0, 128, 0) # change it to your exact bg color
new_data = [item if item[:-1] != green_rgb else (255, 255, 255, 0) for item in data]
rgba.putdata(new_data)
rgba.save('changed.png', 'PNG')
但是,如果您的背景有不同的深浅,那么您将不得不进行额外的检查并确定可接受的绿色深浅的边界。