【问题标题】:How does the raw decoder from PIL work?PIL 的原始解码器如何工作?
【发布时间】:2013-01-22 07:58:01
【问题描述】:

我正在尝试将 .tiff 转换为数组,以便我可以将图像逐个像素地添加在一起,并对它们进行其他一些操作。我正在使用 numpy.fromstring() 和 im.tostring 进行转换。

def image2array(im):
  newArr = numpy.fromstring(im.tostring(),numpy.uint16)
  newArr2 = numpy.reshape(newArr,im.size)
  return newArr2

根据文档,tostring 使用标准的“原始”编码器返回一个包含像素数据的字符串。 fromstring 使用标准的“原始”解码器从字符串中的像素数据创建图像内存。

代码有效,但我不太了解原始图像编码器的工作原理。数组是否产生了字符串数据,比如可以解码成图像的位数据?或者它是实际的像素值?我正在尝试获取实际的像素值,所以我应该使用 im.getdata() 吗?

【问题讨论】:

    标签: string python-imaging-library encoder


    【解决方案1】:

    可能有一种更简单的方法可以通过 numpy.array(pilIm) 和 PIL.Image.fromarray(numpyArray) 实现您的想法: NumPy, PIL adding an image

    如果您也想加载压缩的 tiff 文件,请查看 tifffile.py:http://code.google.com/p/pylibtiff/

    编辑:numpy.array 而不是 numpy.asarray

    【讨论】:

    • 我最终使用了:newArr = numpy.array(im.getdata(),numpy.uint16)
    【解决方案2】:

    是的。你应该使用getdata()。你可以直接使用它来创建你的数组。

    This post 给出了一个很好的例子,如何一起使用 numpy 和 PIL。

    【讨论】:

      猜你喜欢
      • 2013-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-06
      • 2011-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多