我有一个功能可以将图像保存为 16 位,而不是像这样的常规 8 位:
def BitConvertorAndSaver(ImageName, ImageMatrix, OutDirectory):
imageDirectory = os.path.join(OutDirectory, ImageName)
with open(imageDirectory, 'wb+') as f:
writer = png.Writer(width=ImageMatrix.shape[1], height=ImageMatrix.shape[0], bitdepth=16, greyscale=True)
ImageMatrix2list = ImageMatrix.tolist()
writer.write(f, ImageMatrix2list)
return None
我要保存的图像首先被缩放然后保存。
当我使用 order = 1 for 运行此 python 代码时scipy.ndimage.zoom
,没有看到任何问题。图像被缩放并保存得很好,但我想获得更好的插值。
我将插值顺序更改为 3,出现错误:
<ipython-input-2-7ffce91c6279> in BitConvertorAndSaver(ImageName, ImageMatrix, OutDirectory)
4 writer = png.Writer(width=ImageMatrix.shape[1], height=ImageMatrix.shape[0], bitdepth=16, greyscale=True)
5 ImageMatrix2list = ImageMatrix.tolist()
----> 6 writer.write(f, ImageMatrix2list)
7 return None
~\Anaconda3\lib\site-packages\png.py in write(self, outfile, rows)
668 return self.write_array(outfile, a)
669
--> 670 nrows = self.write_passes(outfile, check_rows(rows))
671 if nrows != self.height:
672 raise ProtocolError(
~\Anaconda3\lib\site-packages\png.py in write_passes(self, outfile, rows)
702 rows = unpack_rows(rows)
703
--> 704 return self.write_packed(outfile, rows)
705
706 def write_packed(self, outfile, rows):
~\Anaconda3\lib\site-packages\png.py in write_packed(self, outfile, rows)
734 data = bytearray()
735
--> 736 for i, row in enumerate(rows):
737 # Add "None" filter type.
738 # Currently, it's essential that this filter type be used
~\Anaconda3\lib\site-packages\png.py in unpack_rows(rows)
992 for row in rows:
993 fmt = '!%dH' % len(row)
--> 994 yield bytearray(struct.pack(fmt, *row))
995
996
error: argument out of range
我不明白这里的插值顺序有什么区别