【发布时间】:2021-02-25 23:53:49
【问题描述】:
前言: 您好,我正在处理一个项目,我正在处理视频的每一帧的主色,保存该颜色(以 RGB 格式示例: (44, 32, 14) ),然后将这些颜色导出到图像中它是 x 像素 x 像素。
这是一个由两部分组成的过程(两个单独的程序),我首先将this 视频的每一帧的最主要颜色保存到常规文本文件中,其中行终止符是换行符。这已经完成,现在我有一个文本文件,其中包含每帧的每种主色(总共 5169 帧),我已经检查以确保文本文档中的这个 RGB 数据不是灰度的,它不是t,这里以快速的几行为例:
(18, 9, 17)
(19, 9, 17)
(22, 11, 18)
(23, 11, 18)
(24, 11, 18)
(209, 129, 28)
(212, 135, 31)
(214, 140, 33)
(215, 141, 31)
Here 是 RGB 颜色的完整列表
我的问题:
这是我导出图像的代码:
from PIL import Image
from ast import literal_eval as make_tuple
import numpy as np
# Create an array for lines of text file
lines = []
# Open file
with open("myOutFile.txt") as file_in:
for line in file_in:
# Strip out new line, turn into Tuple data-type, append to list
lines.append(make_tuple(line.strip("\n")))
# Convert the pixels into an array using numpy
array = np.array(lines, dtype=np.uint8)
# Create new Image object with non-dynamic 6k,6k image, this doesn't seem to work
new_image = Image.new("RGB", (6000,6000))
# Create image using array
new_image = Image.fromarray(array)
# Save
new_image.save('new.png')
就像我之前说的,渲染出来的图像只是灰度的,我知道数据集中有多种颜色。 Here 是输出图像。它有点难以看到,因此您可能需要保存并在绘图或某些程序中打开它,您可以在其中放大以查看各个像素。
在创建图像对象时,我将其设置为“RGB”模式,结果显示为灰度。我什至将“Image.fromarray(array)”中的模式设置为 RGB,但仍然得到相同的结果。图像的输出分辨率为 3 x 5169。5169 像素与我得到的帧数完全匹配,如果你看的话,甚至与视频中摄像机角度发生变化时匹配,这意味着它至少可以正常工作。但我的另一个问题是,为什么它是 3 像素宽?如果你看一下here,你会发现这 3 个像素甚至不是相同的颜色......它与 RGB 有关系吗?我只希望它是每帧 X 量的 1 像素,这样我就可以将它带入 Photoshop 并创建更大的照片。
另外,有谁知道我是否可以让它从 X 轴(从左到右,而不是上下)导出?
【问题讨论】:
-
new_image = Image.new("RGB", (6000,6000))行实际上是无用的,因为您在后面的行中重新分配了变量。
标签: python numpy python-imaging-library rgb