【发布时间】:2021-10-08 07:47:34
【问题描述】:
我正在做一个图像处理练习。任务非常简单。首先,我从一个包含 75 行和每行 300 个值的 .ppm 文件中检索一个数组。这些值对应于 RGB (0-255) 中的像素颜色。然后,我必须显示图像。到目前为止一切都很好,但下一个任务是将图像更改为灰度版本。所以我使用LUMA formula 将一行中的每组三个值转换为与灰度对应的单个值。然后,我让程序将该值存储在一个新的 .ppm 文档中(任务的一部分)。但是,因为 Python 一次读取一列,所以它将列中的值存储为一行。本质上,它转置了数据,所以我最终得到 100 行 75 个值,而不是 75 行 100 个值。如何转置此数组以便将信息正确存储到 .ppm 文档中?
这就是我所做的。 s[0] 是数组的“宽度”,s[1] 是“高度”。
with open("greyscalepizza.ppm", "w+") as g:
g.write("P2 \n100 75 \n255")
for i in range(s[0]):
for j in range(s[1]):
if j%int(s[1])==0:
g.write("\n")
pixels[j][3*i]=round(0.299*pixels[j][3*i])
pixels[j][(3*i)+1]=round(0.587*pixels[j][(3*i)+1])
pixels[j][(3*i)+2]=round(0.114*pixels[j][(3*i)+2])
gray = pixels[j][3*i]+pixels[j][(3*i)+1]+pixels[j][(3*i)+2]
g.write("{:.0f} ".format(gray))
【问题讨论】:
-
交换你的 for 循环?
标签: python arrays image-processing