繁体   English   中英

在python中将多维数组转换为元组

[英]Converting multi-dimensional array to a tuple in python

我正在以 rgb 值的形式从网络摄像头获取一些帧数据。

import numpy as np    
frame = get_video()
print np.shape(frame)

输出为 (480, 640, 3)。 现在我想从这些值构建图像。 所以,我想用

im = Image.new("RGB", (480, 640),frame)

但是,这里的第三个参数需要一个元组。 我收到这个错误

SystemError: new style getargs format but argument is not a tuple

所以,我的问题是将这个帧数据转换为元组的最佳方法是什么,以便我可以构建我的图像。

我在这里假设您正在从 PIL 导入类 Image。

使用控制台命令 Image.new 访问的 Image.new() 文档? 是:

在 [3]: Image.new?
类型:函数
基类:
字符串形式:
命名空间:交互式
文件:/usr/lib/python2.7/dist-packages/PIL/Image.py
定义:Image.new(mode, size, color=0)
文档字符串:创建一个新图像

第三个参数是 RGB 颜色,例如 (255,255,255),用于填充孔洞图像。 您无法使用此功能初始化单个像素。

我还假设该框架是一个 3D 阵列。 正如您的输出所暗示的那样,它是 480 行和 640 行 RGB 元组。

我不知道是否有更简单的方法可以做到这一点,但我会通过 putpixel() 函数设置像素值,例如:

im = Image.new( "RGB", (480, 640), (0, 0, 0) ) #initialize 480:640 black image
for i in range(480):
    for j in range(640):
        im.putpixel( (i, j), tuple(frame[i][j]) )

始终通过控制台检查文档字符串,这样可以节省大量时间。 我还建议使用 ipython 作为您的控制台。

我发现这个实现更快

from PIL import Image

im = Image.new("RGB", (480, 640), (0, 0, 0) ) #initialize 480:640 black image
while True:
 frame = get_video()
 im = Image.fromarray(frame)
 im.save('some-name', 'JPEG')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM