我有兩張圖片。在一個影像中,所有非 alpha 通道像素都等于 0,我希望 alpha 通道值等于 255,而在另一個相同大小的影像中,像素不是 0。在這次嘗試中,我m 嘗試基于原始影像創建一個 4 通道 np 陣列,然后使用 np.argwhere 查找像素值非零的位置,然后在新的 np 陣列中,根據該值設定 alpha 通道值。
例如,對于輸入影像中值為 [255, 255, 255] 的每個像素,我希望新影像中的相應像素為 [0, 0, 0, 255]。對于輸入影像中值為 [0, 0, 0] 的每個像素,我希望新影像中的相應像素為 [0, 0, 0, 0]。
mask_file = cv.imread(r'PlateMask_0001.png', cv.IMREAD_UNCHANGED)
scale_factor = 0.125
w = int(mask_file.shape[1] * scale_factor)
h = int(mask_file.shape[0] * scale_factor)
scaled = cv.resize(mask_file, (w, h))
coords = np.argwhere(scaled > 0)
new_object = np.zeros((120, 160, 4))
new_object[coords, :] = 255
cv.imshow('Mask', mask)
cv.imshow('Scaled', new_object)
cv.waitKey(0)
cv.destroyAllWindows()
這是我在 Stack 上的第一個問題,因此請隨時提出問題格式等方面的改進建議。謝謝。
uj5u.com熱心網友回復:
考慮img1成為您的原始影像并img2成為需要修改 alpha 通道的影像。
在下文中, 的 alpha 通道在具有 (255, 255, 255)img2的坐標中包含值 255 :img1
img2[:,:,3][img1 == (255, 255, 255)] = 255
同樣對于值 0:
img2[:,:,3][img1 == (0, 0, 0)] = 0
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/479478.html
標籤:Python 麻木的 opencv 位运算符 阿尔法透明度
