OpenCV TypeError: Ожидается cv :: UMat для аргумента 'src' - Что это? - PullRequest
0 голосов
/ 18 января 2019

Отказ от ответственности: огромный openCV noob

Traceback (последний последний вызов):

Файл "lanes2.py", строка 22, в

canny = canny(lane_image)

Файл "lanes2.py", строка 5, в canny

gray = cv2.cvtColor(imgUMat, cv2.COLOR_RGB2GRAY)

TypeError: Ожидается cv :: UMat для аргумента 'src'

Что именно означает «src»?

Ответы [ 6 ]

0 голосов
/ 14 августа 2019

Иногда у меня возникает эта ошибка, когда videostream из imutils пакет не распознает кадр или дает пустой кадр. В этом случае решение будет выяснять, почему у вас такой плохой кадр, или использовать стандартный метод VideoCapture (0) из opencv2

0 голосов
/ 26 июля 2019

Это общая ошибка, которая иногда возникает, когда у вас несоответствие между типами данных, которые вы используете. Например, я попытался изменить размер изображения с помощью opencv, он выдал ту же ошибку. Здесь - обсуждение этого вопроса.

0 голосов
/ 08 июля 2019

Проблема не в вашем коде, это совершенно нормально:

gray = cv2.cvtColor(imgUMat, cv2.COLOR_RGB2GRAY)

Проблема в том, что imgUMat равен None, поэтому вы, вероятно, допустили ошибку при загрузке изображения:

imgUMat = cv2.imread("your_image.jpg")

Я подозреваю, что вы только что ввели неправильный путь к изображению.

0 голосов
/ 23 апреля 2019

src является первым аргументом cv2.cvtColor.

Ошибка, которую вы получаете, заключается в том, что это неправильная форма. cv2.Umat() функционально эквивалентно np.float32(), поэтому ваша последняя строка кода должна выглядеть так:

gray = (np.float32(imgUMat), cv2.COLOR_RGB2GRAY)
0 голосов
/ 18 января 2019
gray = cv2.cvtColor(cv2.UMat(imgUMat), cv2.COLOR_RGB2GRAY)

UMat является частью Transparent API (TAPI) , помогая написать один код для реализаций CPU и OpenCL.

0 голосов
/ 18 января 2019

Является ли canny вашей собственной функцией? Вы используете Canny из OpenCV внутри? Если да, проверьте, что вы вводите подходящий аргумент для Canny - первый Canny аргумент должен соответствовать следующим критериям:

  • тип: <type 'numpy.ndarray'>
  • dtype: dtype('uint8')
  • - одноканальный или простой канал: в градациях серого, - это двумерный массив, т. Е. Его shape должно быть 2- tuple из int с (tuple, содержащее ровно 2 целых числа)

Вы можете проверить это, напечатав соответственно

type(variable_name)
variable_name.dtype
variable_name.shape

Заменить variable_name именем переменной, которую вы вводите в качестве первого аргумента Canny.

...