为什么会给我TypeError:参数'src'期望的cv :: UMat?

时间:2019-06-14 17:18:09

标签: python numpy opencv

我在为家庭作业编写的某些代码时遇到麻烦。 我认为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)

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)