将多维数组转换为 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 导入 class 图片。
Image.new() 的文档,使用控制台命令 Image.new 访问?是:
在 [3] 中:Image.new?
类型:函数
基地Class:
字符串形式:
命名空间:交互式
文件:/usr/lib/python2.7/dist-packages/PIL/Image.py
定义:Image.new(模式、大小、颜色=0)
文档字符串:创建新图像
第三个参数是一个RGB颜色,比如(255,255,255),用来填充空洞图片。您不能使用此函数初始化单个像素。
我还假设 frame 是一个 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')
我正在以 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 导入 class 图片。
Image.new() 的文档,使用控制台命令 Image.new 访问?是:
在 [3] 中:Image.new?
类型:函数
基地Class:
字符串形式:
命名空间:交互式
文件:/usr/lib/python2.7/dist-packages/PIL/Image.py
定义:Image.new(模式、大小、颜色=0)
文档字符串:创建新图像
第三个参数是一个RGB颜色,比如(255,255,255),用来填充空洞图片。您不能使用此函数初始化单个像素。
我还假设 frame 是一个 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')