Почему он дает мне TypeError: Ожидаемый cv :: UMat для аргумента 'src'? - PullRequest
0 голосов
/ 14 июня 2019

У меня проблемы с кодом, который я пишу для домашней работы.Я думаю, что 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 Ответ

1 голос
/ 14 июня 2019

Ваши маски должны быть типа 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...