精华内容
下载资源
问答
  • 今天小编就为大家分享一篇python 实现将Numpy数组保存图像,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • Numpy数组保存图像

    万次阅读 2018-03-22 22:27:58
    有一个Numpy数组类型的矩阵,如何将它作为图像写入磁盘?任何格式的图像都行(PNG,JPEG,BMP ...)。最佳解决办法可以使用scipy.misc,代码如下:import scipy.misc scipy.misc.imsave('outfile.jpg', image_array) ...

    有一个Numpy数组类型的矩阵,如何将它作为图像写入磁盘?任何格式的图像都行(PNG,JPEG,BMP ...)。

     

    一、scipy.misc

    import scipy.misc
    scipy.misc.imsave('outfile.jpg', image_array)
    

    上面的scipy版本会标准化所有图像,以便min(数据)变成黑色,max(数据)变成白色。如果数据应该是精确的灰度级或准确的RGB通道,则解决方案为:

    import scipy.misc
    scipy.misc.toimage(image_array, cmin=0.0, cmax=...).save('outfile.jpg')
    

     

    二、PIL

    给定一个numpy数组"A":

    from PIL import Image
    im = Image.fromarray(A)
    im.save("your_file.jpeg")
    

    你可以用几乎任何你想要的格式来替换"jpeg"。有关格式详见here更多细节

     

    三、纯Python

    此函数写入压缩的真彩色(每个像素4个字节)RGBA PNG。

    def write_png(buf, width, height):
        """ buf: must be bytes or a bytearray in Python3.x,
            a regular string in Python2.x.
        """
        import zlib, struct
    
        # reverse the vertical line order and add null bytes at the start
        width_byte_4 = width * 4
        raw_data = b''.join(b'\x00' + buf[span:span + width_byte_4]
                            for span in range((height - 1) * width_byte_4, -1, - width_byte_4))
    
        def png_pack(png_tag, data):
            chunk_head = png_tag + data
            return (struct.pack("!I", len(data)) +
                    chunk_head +
                    struct.pack("!I", 0xFFFFFFFF & zlib.crc32(chunk_head)))
    
        return b''.join([
            b'\x89PNG\r\n\x1a\n',
            png_pack(b'IHDR', struct.pack("!2I5B", width, height, 8, 6, 0, 0, 0)),
            png_pack(b'IDAT', zlib.compress(raw_data, 9)),
            png_pack(b'IEND', b'')])
    

    ...数据应直接写入以二进制打开的文件,如下所示:

    data = write_png(buf, 64, 64)
    with open("my_image.png", 'wb') as fd:
        fd.write(data)
    

     

    四、matplotlib-1

    import matplotlib
    
    matplotlib.image.imsave('name.png', array)
    

    适用于matplotlib 1.3.1,不确定更低的版本是否有效。文档:

    Arguments:
      *fname*:
        A string containing a path to a filename, or a Python file-like object.
        If *format* is *None* and *fname* is a string, the output
        format is deduced from the extension of the filename.
      *arr*:
        An MxN (luminance), MxNx3 (RGB) or MxNx4 (RGBA) array.
    

     

    python,image,numpy

     

    五、matplotlib-2

    import matplotlib.pyplot as plt
    plt.imshow(matrix) #Needs to be in row,col order
    plt.savefig(filename)
    

    这将保存plot(而不是图像本身)。

    python,image,numpy

     

    六、opencv

    import cv2
    import numpy as np
    
    cv2.imwrite("filename.png", np.zeros((10,10)))
    

    如果你需要做更多的处理,而不是保存,这个库比较有用。

    参考文献

    展开全文
  • python 将 Numpy 数组保存图像 - imagio: import numpy as np import imageio if __name__ == '__main__': np_array = np.zeros((512, 512, 3), dtype=np.uint8) np_array[200:300, 150:200, :] = 255 ...

    1. 将Numpy数组保存为图像

    2. 老版本的代码:

    import scipy.misc
    scipy.misc.imsave('outfile.jpg', image_array)
    

    3. 错误信息解决:

    DeprecationWarning: `imread` is deprecated!
    `imread` is deprecated in SciPy 1.0.0, and will be removed in 1.2.0.
    Use ``imageio.imread`` instead.
      This is separate from the ipykernel package so we can avoid doing imports until
    

    4. 新版本的代码:

    import numpy as np
    import imageio
    
    
    if __name__ == '__main__':
    
        np_array = np.zeros((512, 512, 3), dtype=np.uint8)
        np_array[200:300, 150:200, :] = 255
        imageio.imwrite(r'D:/temp/outfile.jpg', np_array)
    
    展开全文
  • 如何将Numpy数组保存图像

    万次阅读 多人点赞 2018-03-21 09:41:41
    阅读原文点我 最佳解决办法 ...上面的scipy版本会标准化所有图像,以便min(数据)变成黑色,max(数据)变成白色。如果数据应该是精确的灰度级或准确的RGB通道,则解决方案为: import scipy.misc...

    阅读原文点我

    最佳解决办法

    可以使用scipy.misc,代码如下:
    import scipy.misc
    scipy.misc.imsave('outfile.jpg', image_array)

    上面的scipy版本会标准化所有图像,以便min(数据)变成黑色,max(数据)变成白色。如果数据应该是精确的灰度级或准确的RGB通道,则解决方案为:

    import scipy.misc
    scipy.misc.toimage(image_array, cmin=0.0, cmax=...).save('outfile.jpg')

    第二种解决办法

    使用PIL

    给定一个numpy数组"A":

    from PIL import Image
    im = Image.fromarray(A)
    im.save("your_file.jpeg")

    第三种办法  

    纯Python(2& 3),没有第三方依赖关系的代码片段。 见原文

    第四种办法

    用matplotlib:

    import matplotlib
    
    matplotlib.image.imsave('name.png', array)

    第五种办法

    如果使用matplotlib,也可以这样做:

    import matplotlib.pyplot as plt
    plt.imshow(matrix) #Needs to be in row,col order
    plt.savefig(filename)

     

    第6种办法

    python的opencv(http://docs.opencv.org/trunk/doc/py_tutorials/py_tutorials.html)。

    import cv2
    import numpy as np
    
    cv2.imwrite("filename.png", np.zeros((10,10)))

     

     

     

    展开全文
  • python中将Numpy数组保存图像

    万次阅读 多人点赞 2018-05-03 12:19:53
    上面的scipy版本会标准化所有图像,以便min(数据)变成黑色,max(数据)变成白色。如果数据应该是精确的灰度级或准确的RGB通道,则解决方案为:import scipy.misc misc.toimage(image_array, cm...

    第一种方案

    可以使用scipy.misc,代码如下:

    import scipy.misc
    misc.imsave('out.jpg', image_array)
    

    上面的scipy版本会标准化所有图像,以便min(数据)变成黑色,max(数据)变成白色。如果数据应该是精确的灰度级或准确的RGB通道,则解决方案为:

    import scipy.misc
    misc.toimage(image_array, cmin=0.0, cmax=...).save('outfile.jpg')
    

    第二种方案

    使用PIL

    给定一个numpy数组"A":

    from PIL import Image
    im = Image.fromarray(A)
    im.save("out.jpeg")
    

    你可以用几乎任何你想要的格式来替换"jpeg"。有关格式详见here更多细节


    第三种方案

    mport matplotlib
    
    matplotlib.image.imsave('out.png', array)
    import matplotlib.pyplot as plt
    plt.imshow(matrix) #Needs to be in row,col order
    plt.savefig('out.png')
    

    第四种方案

    
    import cv2
    import numpy as np
    cv2.imwrite("filename.png", np.zeros((10,10)))
    参考 https://vimsky.com/article/3697.html


    展开全文
  • import numpy as np import cv2 img = np.zeros(shape=(5,5)) cv2.imwrite(crack_mix_img, mix_img) ...不需要额外的转换,直接保存就行。可以注意一下数据格式。解释:imread读入的数据就是numpy对象。
  • 180526 将numpy矩阵保存图片

    千次阅读 2018-05-26 14:38:02
    Saving a Numpy array as an image # A 是一个numpy矩阵 from PIL import Image im = Image.fromarray(A) im.save("your_file.jpeg")
  • 阅读原文点我最佳解决办法可以使用scipy.misc,代码如下:import scipy.miscscipy.misc.imsave('outfile.jpg', image_array)上面的scipy版本会标准化所有图像,以便min(数据)变成黑色,max(数据)变成白色。...
  • numpy数组保存图像的几种方法

    千次阅读 2020-04-25 23:01:01
    0.给定一个numpy数组——image 1.使用opencv import cv2 cv2.imwrite("1.jpg", image) 2.使用PIL from PIL import Image im = Image.fromarray(image) im.save("1.jpg") 3.使用scipy.misc import scipy.misc scipy...
  • numpy array保存为nii格式的图像

    千次阅读 2019-10-28 15:36:05
    import nibabel as nib import numpy as np new_image = nib.Nifti1Image(my_arr, np.eye(4)) new_image.set_data_dtype(np.my_dtype) nib.save(new_image, 'my_arr.nii.gz')
  • 【Python】将Numpy数组保存图像

    千次阅读 2018-07-12 15:05:55
    点击阅读原文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 48,391
精华内容 19,356
关键字:

numpy图像保存