我想使用我為其撰寫代碼的二進制掩碼裁剪原始影像
import cv2
import numpy as np
import matplotlib as plt
img = cv2.imread("image.png")
mask = cv2.imread("mask.png")
h, w, _ = img.shape
mask = cv2.resize(cv2.cvtColor(mask, cv2.COLOR_BGR2GRAY), (w, h)) # Resize image
bg = np.zeros_like(img, 'uint8') # Black background
def crop(img, bg, mask):
fg = cv2.bitwise_or(img, img, mask=mask)
fg_back_inv = cv2.bitwise_or(bg, bg, mask=cv2.bitwise_not(mask))
New_image = cv2.bitwise_or(fg, fg_back_inv)
return New_image
plt.imshow(cv2.cvtColor(New_image, cv2.COLOR_BGR2RGB))
我收到一個錯誤,指出
NameError: name 'New_image' is not defined
請建議我在這里犯錯的地方
uj5u.com熱心網友回復:
您應該使用該函式,并可能將回傳值分配給New_image變數:
import cv2
import numpy as np
import matplotlib as plt
img = cv2.imread("image.png")
mask = cv2.imread("mask.png")
h, w, _ = img.shape
mask = cv2.resize(cv2.cvtColor(mask, cv2.COLOR_BGR2GRAY), (w, h)) # Resize image
bg = np.zeros_like(img, 'uint8') # Black background
def crop(img, bg, mask):
fg = cv2.bitwise_or(img, img, mask=mask)
fg_back_inv = cv2.bitwise_or(bg, bg, mask=cv2.bitwise_not(mask))
New_image = cv2.bitwise_or(fg, fg_back_inv)
return New_image
New_image = crop(img,bg,mask) # <--------------
plt.imshow(cv2.cvtColor(New_image, cv2.COLOR_BGR2RGB))
或者你可以這樣做,沒有New_image變數:
plt.imshow(cv2.cvtColor(crop(img,bg,mask), cv2.COLOR_BGR2RGB)
uj5u.com熱心網友回復:
您只創建了函式crop,但還沒有呼叫它。您必須創建變數并分配從函式中獲得的值,然后才將其用于繪圖。
def crop(img, bg, mask):
fg = cv2.bitwise_or(img, img, mask=mask)
fg_back_inv = cv2.bitwise_or(bg, bg, mask=cv2.bitwise_not(mask))
New_image = cv2.bitwise_or(fg, fg_back_inv)
return New_image
New_image = crop(img, bg, mask)
plt.imshow(cv2.cvtColor(New_image, cv2.COLOR_BGR2RGB))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/313203.html
上一篇:在一個視窗中顯示多個攝像頭
下一篇:薛定諤元組,是元組而不是元組
