【问题标题】:How to generate all color into individual pixel?如何将所有颜色生成为单个像素?
【发布时间】:2019-07-08 04:04:31
【问题描述】:

我可以通过将 3 个 np.zeros([1,1,1]) 堆叠在一起来生成全黑像素

但为什么不这样呢?

import numpy as np
import cv2

m  = np.zeros([8,32,1])

k = 0 
for i in range(m.shape[0]):
    for j in range(m.shape[1]):
        for z in range(m.shape[2]):
            m[i,j,z] = k
            k+=1
a = np.stack(m,m,m)

cv2.imwrite('rgb.png',a)

错误

axis = normalize_axis_index(axis, result_ndim)
TypeError: only size-1 arrays can be converted to Python scalars

【问题讨论】:

  • 你到底想做什么堆叠 3D 数组:a=np.stack(m,m,m)?
  • 另外,语法是np.stack((m,m,m), axis=-1)
  • 我想将每种颜色生成为一个像素
  • 这是您的总体目标,而不是具体的命令。使用这段代码,您将生成不同的灰度级别。
  • @QuangHoang 没有堆叠 [8,32,1] 3 次会变成 [8,32,3]?通过合并这些灰度,我将得到 RGB 颜色

标签: python numpy opencv


【解决方案1】:

好的,所以我稍微修改了您的代码以显示它是如何工作的:

m  = np.zeros([8,32])

k = 0 
for i in range(m.shape[0]):
    for j in range(m.shape[1]):
        m[i,j] = k
        k+=1
a = np.stack((m,m,m), axis=-1)

输出:

【讨论】:

  • 为什么不生成 RGB 颜色?因为我使用 r,g,b = cv2.split 每个平面都是灰度的,所以结合每个平面我应该得到 RGB 对吗?
  • 你确实得到了RGB,但由于你在三个通道上堆叠相同的数组,即r=g=b,结果图像只有灰色。
猜你喜欢
  • 2020-10-04
  • 1970-01-01
  • 2021-01-27
  • 1970-01-01
  • 2020-03-22
  • 1970-01-01
  • 2022-01-14
  • 2019-06-10
  • 1970-01-01
相关资源
最近更新 更多