繁体   English   中英

如何使用python将原始图像转换为png

[英]How to convert raw images into png using python

我正在尝试使用python将原始图像数据转换为png。 我是python的新手,尤其是图像处理...

原始文件是16位灰度图像。

因为我已经扫描了论坛,所以提出了以下解决方案:

from PIL import Image, ImageFilter
import numpy as np
from scipy import ndimage, misc


rawfile = np.fromfile('test.raw', dtype=np.int16)

rawfile.shape = (1025,1025)
imgSize = (1025,1025)

img = Image.fromstring('L', imgSize, rawfile, 'raw', 'F;16')
img.save("rawData.png")

但是我一直收到以下错误:

Traceback (most recent call last):
  File "****\Programs\Python 2.7.6\readraw\readraw.py", line 11, in <module>
    img = Image.fromstring('L', imgSize, rawfile, 'raw', 'F;16')
  File "****\Programs\Python 2.7.6\lib\site-packages\PIL\Image.py", line 1835, in fromstring
    return frombytes(*args, **kw)
  File "****\Programs\Python 2.7.6\lib\site-packages\PIL\Image.py", line 1822, in frombytes
    im.frombytes(data, decoder_name, args)
  File "****\Programs\Python 2.7.6\lib\site-packages\PIL\Image.py", line 608, in frombytes
    d = _getdecoder(self.mode, decoder_name, args)
  File "****\Programs\Python 2.7.6\lib\site-packages\PIL\Image.py", line 390, in _getdecoder
    return decoder(mode, *args + extra)
ValueError: unknown raw mode

有人可以向我解释为什么原始模式未知吗? 我检查了文档,据我了解的主题,PILLOW lib应该随附此文件吗?

最好的祝福


谢谢你们的帮助!

我更改了代码,现在看来可以正常工作:

from PIL import Image, ImageFilter
import numpy as np
from scipy import ndimage, misc


rawfile = np.fromfile('test.raw', "uint16")

rawfile.shape = (1025,1025)
misc.imsave("test.png", rawfile)

我认为PIL不了解numpy对象。 我认为PIL Image有一种从磁盘读取原始文件的方法。 然后,您可以修改内存中的图像并以所需的格式保存/导出。

PIL(和PILLOW)不适用于numpy数组。 有一个函数可以在numpy中来回转换,但是我倾向于不使用PIL进行这种处理。

相反,我建议您使用scipy.misc.imsave()保存数组,此函数可以保存到PNG。

使用raw2png.py吗?

来源: http://www.cl.cam.ac.uk/~cs448/git/trunk/src/bin/raw2png.pyhttp://www.cl.cam.ac.uk/~cs448/git/trunk/src/bin/raw2png.py

或带exec命令行的ImageMagick: convert

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM