当前位置: 首页 > 面试题库 >

Python和16位Tiff

袁羽
2023-03-14
问题内容

如何在Python中转换和保存16位单通道TIF?

我可以加载没有问题的16位和32位图像,并看到32位图像是mode F,而16位图像是mode I;16S

import Image
i32 = Image.open('32.tif')
i16 = Image.open('16.tif')
i32
# <TiffImagePlugin.TiffImageFile image mode=F size=2000x1600 at 0x1098E5518>
i16
# <TiffImagePlugin.TiffImageFile image mode=I;16S size=2000x1600 at 0x1098B6DD0>

但是我在处理16位图像时遇到了麻烦。如果我想另存为PNG,则不能直接这样做:

i32.save('foo.png')
# IOError: cannot write mode F as PNG
i16.save('foo.png')
# ValueError: unrecognized mode

如果转换32位图像,则可以保存它:

i32.convert('L').save('foo.png')

但是相同的命令不适用于16位图像:

i16.convert('L').save('foo.png')
# ValueError: unrecognized mode

问题答案:

对于从16位灰度TIFF到PNG的无损转换,请使用PythonMagick:

from PythonMagick import Image
Image('pinei_2002300_1525_modis_ch02.tif').write("foo.png")


 类似资料:
  • 问题内容: 有没有人有一种方法可以在Python中导入每通道16位,3通道TIFF图像? 我还没有找到一种在处理TIFF格式时可以保留每个通道16位深度的方法。我希望一些乐于助人的人能够解决。 这是到目前为止我没有成功尝试过的结果以及结果的列表: 到目前为止,我发现的唯一解决方案是使用ImageMagick将图像转换为PNG。然后,沼泽标准会毫无问题地读取PNG文件。 我遇到的另一个问题是将任何n

  • 问题内容: 我正在尝试使用BufferedImage.TYPE_USHORT_GRAY将16位灰度图像数据写入png。通常我会这样写图像: 然后: 设置像素,最后: 写到png图像。 但是现在我将其作为图像: 如何将像素保存为该格式?将setRGB()与16位整数一起使用似乎无效,当我打开保存的png文件时,我看到很多条带发生。 我尝试保存从0到65535的简单渐变,然后在灰度图像上使用setRG

  • 我有一个大问题,试图将一个大的科学图像(7MB)16位PNG图像转换为JPG,以便压缩它并检查Python中的任何最终工件。原始图像可在以下位置找到:https://postimg.cc/p5PQG8ry在这里阅读其他答案时,我尝试了枕头和OpenCV,但没有成功。我得到的唯一东西是一张白色的床单。我做错了什么?注释行是使用Python读取16位PNG图像文件的尝试,但似乎不适用于生成数据类型错误

  • 我有如下64位值: 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1101 0011 给定数字流的十进制值为-45。 我想分成四个16位值: 1111111111111111111 1111111111111111111 1111111111111111111111111 1111111111111111

  • 我是第一次使用openCV。我正在使用openCV3和XCode对其进行编码。我想创建一个16位的灰度图像,但我想我有的数据是这样定义的,4000是像素值为白色和0为黑色。我在int类型的数组中有这些像素的信息。如何创建Mat并将数组中的值分配给Mat?