簡體   English   中英

使用OpenCv Python將蒙版應用到圖像

[英]Apply mask to image with OpenCv Python

我正在嘗試將opencv與python一起使用,但我遇到了這個問題:

我有一個圖像和一個二進制蒙版(具有0和255的單通道圖像),我想迭代蒙版的每個像素,並根據蒙版像素的值對原始圖像執行一些操作。 如何使用numpy優化來做到這一點?

例如,假設我要創建一個新圖像,如果蒙版中的像素值為0,則每個像素保持不變;如果蒙版中的像素為255,則將像素設置為(0,0,255),例如:

def inpaint(originalImage, mask):
    [rows, columns, channels] = originalImage.shape
    result = np.zeros((rows,columns,channels))
    for row in range(rows):
        for column in range(columns):
            if(mask[row,column]==0):
                result[row,column] = originalImage[row,column]
            else:
                result[row,column] = (0,0,255)
    return result

我如何使用numpy對此進行優化? 非常感謝你

在將遮罩擴展到3D之后,我們可以使用np.where ,讓我們以廣播的方式進行選擇-

np.where(mask[...,None]==0, originalImage,[0,0,255])

或與原始代碼保持更近的距離,進行復制,然后與mask一並分配-

result = originalImage.copy()
result[mask!=0] = (0,0,255)

暫無
暫無

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

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