从图片 PILLOW 中删除选定区域
Remove selected area from picture PILLOW
import numpy
from PIL import Image, ImageDraw
im = Image.open("image.jpg").convert("RGBA")
imArray = numpy.asarray(im)
polygon = [(700,150),(1200,150),(1200,450),(1000,650),(700,650)]
maskIm = Image.new('L', (imArray.shape[1], imArray.shape[0]), 0)
ImageDraw.Draw(maskIm).polygon(polygon, outline=1, fill=1)
mask = numpy.array(maskIm)
newImArray = numpy.empty(imArray.shape,dtype='uint8')
newImArray[:,:,:3] = imArray[:,:,:3]
newImArray[:,:,3] = mask*255
newIm = Image.fromarray(newImArray, "RGBA")
newIm.show()
原图
在这段代码之后,我得到了这张图片
我怎样才能从图片中删除选择?
我想这样做
提前感谢您的帮助
您似乎需要反转掩码 - 目前,您的多边形周围有 0 个,内部有 1 个。
尝试将 newImArray[:,:,3] = mask*255
更改为 newImArray[:,:,3] = (1-mask)*255
import numpy
from PIL import Image, ImageDraw
im = Image.open("image.jpg").convert("RGBA")
imArray = numpy.asarray(im)
polygon = [(700,150),(1200,150),(1200,450),(1000,650),(700,650)]
maskIm = Image.new('L', (imArray.shape[1], imArray.shape[0]), 0)
ImageDraw.Draw(maskIm).polygon(polygon, outline=1, fill=1)
mask = numpy.array(maskIm)
newImArray = numpy.empty(imArray.shape,dtype='uint8')
newImArray[:,:,:3] = imArray[:,:,:3]
newImArray[:,:,3] = mask*255
newIm = Image.fromarray(newImArray, "RGBA")
newIm.show()
原图
在这段代码之后,我得到了这张图片
我怎样才能从图片中删除选择?
我想这样做
提前感谢您的帮助
您似乎需要反转掩码 - 目前,您的多边形周围有 0 个,内部有 1 个。
尝试将 newImArray[:,:,3] = mask*255
更改为 newImArray[:,:,3] = (1-mask)*255