我正在嘗試在使用 numpy 陣列生成的另一個影像之上插入一個影像。當我將此影像作為 jpeg 寫入檔案時,該檔案已正確寫入。
nparr = np.frombuffer(msg.value(), np.uint8)
img = cv2.imdecode(nparr, cv2.IMREAD_COLOR)
但是當我添加影像時,它給了我一個錯誤,
img[y_offset:y_offset logo.shape[0], x_offset:x_offset logo.shape[0]] = logo
ValueError: could not broadcast input array from shape (160,160,4) into shape (160,160,3)
我的大影像尺寸(img-jpeg)是 1280x622,我的標志影像(logo-png)尺寸是 160x160。我正在插入徽標,
logo = cv2.imread("logo.png", cv2.IMREAD_UNCHANGED)
x_offset=y_offset=50
img[y_offset:y_offset logo.shape[0], x_offset:x_offset logo.shape[0]] = logo
有沒有辦法解決這個問題,因為我是 Python 和 Numpy 的新手。
uj5u.com熱心網友回復:
看來您的徽標影像具有 Alpha 通道。由于我沒有影像我無法完全測驗,但試試這個:
img[y_offset:y_offset logo.shape[0], x_offset:x_offset logo.shape[0]] = logo[:,:,:3]
這只會將前 3 個通道(B、G 和 R)logo放入img.
編輯:您還可以指定讀取影像的方式cv2.imread():
cv2.imread("logo.png", cv2.IMREAD_COLOR)
這將忽略 Alpha 通道。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/355879.html
