我從外部 api 獲得了以 uint32 元組形式呈現(xiàn)的圖像,其中每個(gè) uint32 由 4 個(gè) uint8 組成,其中包含 r、g、b 和 alpha(始終 = 0),我需要將其轉(zhuǎn)換為格式與我相同的 3d numpy 數(shù)組可以從imageio.imread. 問(wèn)題是,當(dāng)我使用numpy.view顏色順序時(shí),顏色順序是相反的。這是我編寫(xiě)的代碼,可以正常工作,但我想知道是否有更好的轉(zhuǎn)換方法。 frame_buffer_tuple = ... # here we have tuple of width*height length
framebuffer = np.asarray(frame_buffer_tuple).astype(dtype='uint32').view(dtype='uint8').reshape((height, width, 4)) # here I have height x width x 4 numpy array but with inverted colors (red instead of blue) and alpha I don't need
framebuffer = np.stack((framebuffer[:, :, 2], framebuffer[:, :, 1], framebuffer[:, :, 0]), axis=2) # here I've got correct numpy height x width x 3 array我更關(guān)心執(zhí)行時(shí)間,然后是內(nèi)存,但由于我可以擁有 7680 × 4320 圖像,因此兩者可能都很重要。謝謝!
2 回答

Cats萌萌
TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超9個(gè)贊
你只需要反轉(zhuǎn)最后一個(gè)維度嗎?嘗試
framebuffer = framebuffer [:, :, :2:-1] # drops alpha

慕姐8265434
TA貢獻(xiàn)1813條經(jīng)驗(yàn) 獲得超2個(gè)贊
實(shí)際上有效的是:
framebuffer = np.asarray(frame_buffer_tuple).astype('uint32').view('uint8').reshape((height, width, 4))[:, :, 2::-1]
我暫時(shí)將其標(biāo)記為解決方案,直到有人提出解決該問(wèn)題的方法。
添加回答
舉報(bào)
0/150
提交
取消