Python 反转二进制图像;.invert() 失败

way*_*way 6 python numpy image python-imaging-library python-2.7

我有一个二进制图像,尺寸为 64x63,其中每个像素都是 1 或 0。

import struct
from PIL import Image
import numpy

...

i1 = Image.frombytes('1', (64, 63), r[3], 'raw')
Run Code Online (Sandbox Code Playgroud)

我怎样才能反转这个图像?

编辑

我尝试了建议的解决方案:

from PIL import Image
import PIL.ImageOps    

i1 = PIL.ImageOps.invert(i1)
Run Code Online (Sandbox Code Playgroud)

但是,这导致了错误:

raise IOError("not supported for this image mode")
IOError: not supported for this image mode
Run Code Online (Sandbox Code Playgroud)

我相信这是因为图像既不是 RGB 也不是 L(灰度)。相反,它是一个二进制图像文件,其中每个像素只有 0 或 1。

小智 7

另一种选择是在反转之前将图像转换为支持的反转格式,即:

import PIL.ImageOps
inverted_image = PIL.ImageOps.invert( image.convert('RGB') )
Run Code Online (Sandbox Code Playgroud)


bob*_*obo 4

如果你愿意转换i1为 numpy 数组,你可以这样做

i1 = 1 - numpy.asarray(i1)
Run Code Online (Sandbox Code Playgroud)