我在为家庭作业编写的某些代码时遇到麻烦。
我认为mask = source[B-R].point(lambda i: i < -26)
无法分配给功能cv2.dilate(mask, kernel,iterations=1)
我将发布代码的照片
import PIL
from PIL import Image
import numpy as np
import cv2
image = cv2.imread ('/Applications/Python 3.7/Input/1.jpg', 0)
image = Image.open ('/Applications/Python 3.7/Input/1.jpg')
source = image.split()
R, G, B = 0, 1, 2
mask = source[B-R].point(lambda i: i < -26)
kernel = np.ones((9, 9))
mask = cv2.dilate(mask, kernel, iterations=1)
答案 0 :(得分:1)
您的面具必须为UMat类型。您的图像是某种PIL图像格式。原始图片是:
print(image.format)
JPEG
您的面具类型为:
print(mask.format)
None
您还没有使用通过cv.imread
阅读的图像
您可以使用opencv创建简单的蒙版,例如像这样的东西:
b,g,r = cv2.split(image)
res = b-r
ret = res[res<26]
mask = cv2.dilate(ret, kernel, iterations=1)