【问题标题】:Color mismatch in combining R,G, and B components in Python在 Python 中组合 R、G 和 B 组件时的颜色不匹配
【发布时间】:2015-09-16 16:35:32
【问题描述】:

在以下代码中,我首先将图像转换为 Numpy 数组:

import numpy as np
from PIL import Image

sceneImage = Image.open('peppers.tif')
arrImage = np.array(sceneImage) # 256x256x3 array

现在我定义了一个新数组,并按照以下代码将arrImage放入其中:

import matplotlib.pyplot as plt
final_image = np.zeros((N,N,3))
final_image[...,0] = arrImage[...,0]
final_image[...,1] = arrImage[...,1]
final_image[...,2] = arrImage[...,2]
plt.imshow(final_image)
plt.show()

换句话说,我已经分别复制粘贴了 R、G 和 B 组件(尽管这样做更容易,但我是故意这样做的)。

现在,问题是fianl_imagearrImage 没有向我显示相同的图像。形状如下所示:

arrImage:

final_image:

这两个不一样有什么问题?

【问题讨论】:

  • 你是如何显示这两个数组的?看起来您已将 YUV 图像显示为 RGB。
  • 这里的N 是什么?
  • final_image = np.zeros((N, N, 3),dtype=np.uint8)?
  • @Divakar 这是图片的大小。
  • @PadraicCunningham 谢谢。这样就解决了问题。您能否将其添加到我可以接受的答案部分?

标签: python numpy image-processing python-imaging-library


【解决方案1】:

来自docs

dtype:数据类型,可选

数组所需的数据类型,例如,numpy.int8。 默认为 numpy.float64。

您只需将正确的 dtype 传递给np.zeros,即np.uint8

 sceneImage = Image.open('peppers.tif')
arrImage = np.array(sceneImage)  # 256x256x3 array
final_image = np.zeros((N, N,  3),dtype=np.uint8)
final_image[..., 0] = arrImage[..., 0]
final_image[..., 1] = arrImage[..., 1]
final_image[..., 2] = arrImage[..., 2]

img = Image.fromarray(final_image, 'RGB')
img.save('whatever.png')

【讨论】:

    猜你喜欢
    • 2016-12-16
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-30
    • 1970-01-01
    相关资源
    最近更新 更多