OpenCV (4.2.0) (-206: неправильный флаг (поле параметра или структуры)) Нераспознанный или неподдерживаемый тип массива в функции 'cvGetMat' - PullRequest
0 голосов
/ 12 марта 2020

Я пытаюсь закрасить изображение 8000x4000 и двоичную маску 8000x4000, но получаю следующую ошибку.

Ошибка Traceback (последний последний вызов) в 1 img = cv.imread (' input / 200130_033344133.jpg ') 2 mask = cv.imread (' resources / maskX.png ', 0) ----> 3 dst = cv.inpaint (img, mask, 3, cv.INPAINT_TELEA) 4 cv.imshow ('dst', dst) 5 cv.waitKey (0)

ошибка: OpenCV (4.2.0) C: \ projects \ opencv-python \ opencv \ modules \ core \ src \ array. cpp: 2492: ошибка: (-206: неправильный флаг (поле параметра или структуры)) Нераспознанный или неподдерживаемый тип массива в функции 'cvGetMat'

. Вот мой код. я попытался преобразовать изображение и маску в массив numpy или cv2.UMat. но все напрасно

img = cv.imread('input/200130_033344133.jpg')
mask = cv.imread('resources/maskX.png',0)
dst = cv.inpaint(img,mask,3,cv.INPAINT_TELEA)
cv.imshow('dst',dst)
cv.waitKey(0)
cv.destroyAllWindows()

какая-либо причина, почему это не работает? изображения загружаются правильно, я проверил.

1 Ответ

1 голос
/ 12 марта 2020

Я не знаю, что не так, потому что он отлично работает для меня на Python 3.7 и OpenCV 3.4 на Ma c OSX.

Вы импортировали cv? Ваша маска больше 1 канала после создания оттенков серого? Возможно, это проблема OpenCV 4?

Вот что у меня работает.

Изображение с нуля:

enter image description here

Скретч-маска:

enter image description here

import cv2

img = cv2.imread('zelda1_scratch.jpg')
mask = cv2.imread('zelda1_scratch_mask.png',0)
dst = cv2.inpaint(img,mask,3,cv2.INPAINT_TELEA)
cv2.imwrite('zelda1_scratch_inpainted.jpg', dst)
cv2.imshow('dst',dst)
cv2.waitKey(0)
cv2.destroyAllWindows()

Результат:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...