簡體   English   中英

OpenCV 和 Python:在圖像上覆蓋彩色蒙版

[英]OpenCV & Python: Cover a colored mask over a image

我想用黑白蒙版形狀的透明純色覆蓋覆蓋圖像

目前我正在使用以下java代碼來實現這一點。

redImg = new Mat(image.size(), image.type(), new Scalar(255, 0, 0));
redImg.copyTo(image, mask);

我不熟悉python api。

所以我想知道python中是否有任何替代api。 有沒有更好的實現方式?

圖片:

源圖片

面具:

面具

我想要的是:

我想要的是

現在,在我處理了所有這些 Python、OpenCV、Numpy 的事情一段時間后,我發現用代碼實現它非常簡單:

image[mask] = (0, 0, 255)

-------------- 原來的答案 --------------

我通過以下代碼解決了這個問題:

redImg = np.zeros(image.shape, image.dtype)
redImg[:,:] = (0, 0, 255)
redMask = cv2.bitwise_and(redImg, redImg, mask=mask)
cv2.addWeighted(redMask, 1, image, 1, 0, image)

這個想法是將掩碼轉換為像素為0 (黑色)或255 (白色)的二進制格式。 白色像素代表保留的部分,而黑色部分被丟棄。 然后將蒙版上的所有白色像素設置為所需的BGR顏色。

輸入圖像和蒙版

結果

代碼

import cv2

image = cv2.imread('1.jpg')
mask = cv2.imread('mask.jpg', 0)
mask = cv2.threshold(mask, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]
image[mask==255] = (36,255,12)

cv2.imshow('image', image)
cv2.imshow('mask', mask)
cv2.waitKey()

這對我有用:

red = np.ones(mask.shape)
red = red*255
img[:,:,0][tmask>0] = red[mask>0]

所以我制作了一個具有 255 個實心值的二維數組,並將其替換為我的圖像的紅色帶(以像素為單位),我的掩碼不為零。 紅面具

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM