gpt4 book ai didi

python - 如何正确地将 3d 数组转换为连续的 rgb 字节

转载 作者:太空狗 更新时间:2023-10-30 02:31:03 25 4
gpt4 key购买 nike

我正在尝试将 cv2.imread 返回的 3d 数组转换为连续的 rgb 字节数组,以便在 GTK 中显示。下面是我的转换代码:

def ndarr2rgb(img):
r_arr = img[:, :, 0].ravel() # read channel
g_arr = img[:, :, 1].ravel() # green channel
b_arr = img[:, :, 2].ravel() # blue channel
numItems = img.shape[0] * img.shape[1] * img.shape[2] # number of entries in byte array
z = img.shape[2] # z dimension, always equal to 3
arr = np.zeros((numItems, 1))
# to fill the byte array with r,g,b channel
for i in xrange(0, numItems):
if i % z == 0:
arr[i] = r_arr[i/z]
if i % z == 1:
arr[i] = g_arr[i/z]
if i % z == 2:
arr[i] = b_arr[i/z]
return arr

因此,在我的代码中,我首先将三个维度分别放入 r_arr、g_arr、b_arr,然后我将这些值按顺序或 RGB 放入“arr”中。所以在迭代之后数组 'arr' 将像 'r0, g0, b0, r1, g1, b1, ...'

然后我使用“GdkPixbuf.Pixbuf.new_from_data”函数从上面的“ndarr2rgb”函数返回的arr中获取pixbuf。我使用“image.set_from_pixbuf”来显示图像。但是我得到了以下结果:
enter image description here好像有一些嘈杂的地方,所以请帮我解决我的问题,谢谢。

最佳答案

只是做:

all_in_one_row = np.reshape(img,(-1))

关于python - 如何正确地将 3d 数组转换为连续的 rgb 字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24062779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com