将Numpy数组保存为图像
有一个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(2& 3),没有第三方依赖关系的代码片段。
此函数写入压缩的真彩色(每个像素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)
Original source
另见:Rust Port from this question.
使用示例感谢@Evgeni Sergeev:https://stackoverflow.com/a/21034111/432509
第四种办法
用matplotlib
:
- 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.
第五种办法
如果使用matplotlib,也可以这样做:
- import matplotlib.pyplot as plt
- plt.imshow(matrix) #Needs to be in row,col order
- plt.savefig(filename)
这将保存plot(而不是图像本身)。
第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)))
如果你需要做更多的处理,而不是保存,这个库比较有用。
参考文献
- Saving a Numpy array as an image
将Numpy数组保存为图像相关推荐
- python用numpy生成图片并保存_python 实现将Numpy数组保存为图像
python 实现将Numpy数组保存为图像 第一种方案 可以使用scipy.misc,代码如下: import scipy.misc misc.imsave('out.jpg', image_arr ...
- 34.35.热图(heatmap)、创建带注释的热图、使用辅助函数的代码样式、图像显示、图像插值、将图像数据导入Numpy数组、将numpy数组绘制为图像
34.热图(heatmap) 34.1.创建带注释的热图 34.2.使用辅助函数的代码样式 35.图像显示 35.1.图像插值 35.2.将图像数据导入Numpy数组 35.3.将numpy数组绘制为 ...
- numpy数组保存至txt时一系列问题及其解决方案
0.问题描述 在做语音的特征提取的时候,需要将numpy数组内的数据写入到txt文件中,但是在写入后却是这个狗样子,自动给我缺省了一些数据,且还存在一些其他问题,写入txt的原始代码如下所示: ''' ...
- python三维数据本地保存_如何将3D Python/NumPy数组保存为文本文件?
如果保存文件需要是"csv"样式的文本,则可以使用多个savetxt和loadtxt.关键是要知道这两个都可以 以打开的文件作为输入. 写作示例:In [31]: A=np.ara ...
- python保存灰度图像_如何使用matplotlib/numpy将数组保存为灰度图像?
我正在尝试将一个尺寸为128x128像素的numpy数组保存为灰度图像. 我只是简单地认为pyplot.imsave函数可以完成这项工作,但事实并非如此,它以某种方式将我的数组转换为RGB图像. 我试 ...
- python ndarray find_python – 从存储在NumPy ndarrays中的图像中查找特定(R,G,B)颜色值的(x,y)索引...
我有一个存储在numpy数组中的图像,由imread()产生: >>> ndim array([[[ 0, 0, 0], [ 4, 0, 0], [ 8, 0, 0], ..., [ ...
- 如何以npy文件存储numpy数组呀
使用 numpy 的 save() 函数可以将 numpy 数组保存到 .npy 文件中.例如: import numpy asnp# 假设你有一个 numpy 数组 a a = np.array([ ...
- python 写txt 换行_python 批配换行Numpy数组的保存与读取方法
1. 数组以二进制格式保存 np.save和np.load是读写磁盘数组数据的两个主要函数.默认情况下,数组以未压缩的原始二进制格式保存在扩展名为npy的文件中,以数组a为例 np.save(&quo ...
- python保存数据框_python – 如何将numpy数组作为对象存储在pandas数据框中?
我有一系列图像,存储在CVS文件中,每个图像一个字符串,该字符串是9216空格分隔整数的列表.我有一个函数将其转换为96×96 numpy数组. 我希望将这个numpy数组存储在我的数据帧的一列而不是 ...
最新文章
- WheelView实现省市区三级联动(数据库实现版本号附带完整SQL及数据)
- 三星电子通信撤出中国!
- GJB289A总线测试工装研究
- 怎样用好酒店培训管理系统
- 把html模板vue框架,vue框架搭建个人博客网站模板
- 语言技能c1,从0开始学法语,20个月考下DALF C1,我如何立竿见影学语言?
- 英文对于程序员的重要性
- 易灵思FPGA-报告总结篇
- 电商平台电子面单打印对接
- 96---Python 绘制阿基米德螺旋线
- 生成二维码并将Bitmap保存成图片
- 解封ChatGPT我只用了一句话
- ue的xml格式转换_迷你档-迷你档(minidown)下载 v2.5官方版--pc6下载站
- 第一个工作单位的那些事
- 往事如烟 - 老钟1
- 微商是如何推广的呢?
- 刚子扯谈:标题木有啊
- 一张图快速了解五大架构风格
- 蓝桥杯——既约分数(c语言)
- 计算机员工工资管理系统源代码,C++员工工资管理系统源代码
热门文章
- sv_labs学习笔记 专栏说明博文目录
- 你可能没听过的 Java 8 中的 10 个特性
- node 加密解密模块_聊聊Node加密模块crypto加密原理的那些事
- java输入验证码代码,JavaWeb 实现验证码功能(demo)
- 电大计算机考试将网页保存到桌面,电大计算机网考小抄.pdf
- Asp.Net无刷新分页( jquery.pagination.js)
- DIV+CSS常见错误汇总
- oracle的globalname后缀,在Oracle 11g下查看数据库的global_name
- 中的live_2016知乎Live精选汇编——简历类
- ORM框架之Mybatis(五)mybatis生成器配置文件说明以及生成的类的说明