是否有可能在不使用以下代碼的情況下將RGBA影像轉換為BGRA,即不使用opencv?
image = self.cv2.cvtColor(image, self.cv2.COLOR_RGBA2BGRA)
uj5u.com熱心網友回復:
你可以用這行代碼將一張圖片從BGRA轉換為RGBA:
image[..., :3] = image[..., 2::-1]
當然,它修改了現有的陣列,而不是創建一個新的陣列(如果你不打算再次使用舊的陣列,這很好,因為它更有效率)。另一種方法是 image = image[..., [2,1,0,3]],但由于它使用了花式索引,而不是修改舊陣列,它創建了一個舊陣列的副本,從而占用了更多記憶體。
再次使用同一行代碼將影像從RGBA轉換回BGRA。
uj5u.com熱心網友回復:
就像這樣用"花式索引":
# Make a dummy, random 4-channel image
RGBA = np.random.randint(0,256,(2,3,4), np.uint8)
在[3]。RGBA
輸出[3]。
array([[102, 204, 36, 128] 。
[178, 151, 166, 45] 。
[199, 49, 104, 98]】。]
[[ 79, 33, 223, 62] 。
[26, 34, 233, 254] 。
[62, 20, 57, 149] ], dtype=uint8)
# 將RGBA轉換成BGRA。
BGRA = RGBA[..., [2,1,0,3] ]
在[5]。BGRA
輸出[5]:
array([[36, 204, 102, 128]。
[166, 151, 178, 45] 。
[104, 49, 199, 98]】。]
[[223, 33, 79, 62] 。
[233, 34, 26, 254] 。
[57, 20, 62, 149] ], dtype=uint8)
我認為OpenCV喜歡它的資料是連續的,所以如果你遇到問題,可以使用:
BGRA = RGBA[... , [2,1,0,3] .copy()
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/311693.html
標籤:
