0

我有一个功能可以将图像保存为 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

我不明白这里的插值顺序有什么区别

4

0 回答 0