Аргументы в cv2 :: imshow - PullRequest
12 голосов
/ 28 марта 2012

Редактировать: оригинальное название "конвертировать массив numpy в cvmat" было ошибкой - сообщение об ошибке OpenCV было менее чем полезным, и я не читал документы!

с OpenCV 2, IPython теперь по умолчанию использует массивы NumPy.

cvimage = cv2.imread("image.png") #using OpenCV 2
type(cvimage)
Out: numpy.ndarray  #dtype is uint8

pltimage = plt.imread("image.png")  #using Matplotlib
type(pltimage)
Out: numpy.ndarray   #dtype is float

plt.imshow(cvimage)  # works great

cv2.imshow(cvimage)
TypeError: Required argument 'mat' (pos 2) not found

Поскольку cv2 по умолчанию использует массивы NumPy, конструктор cv :: Mat больше не существует, а NumPy не имеетфункции для преобразования в массив cv::Mat.

Есть идеи?

Ответы [ 3 ]

18 голосов
/ 28 марта 2012

Функция имеет следующую строку документации: imshow(winname, mat) -> None.Вы можете увидеть строку документа, набрав cv2.imshow.__doc__ в интерпретаторе.

Попробуйте cv2.imshow('Image', cvimage).

tl; dr: В исходном вопросе отсутствовал первый аргумент "имени окна".«imshow» принимает два параметра, и был предоставлен только один.

15 голосов
/ 13 октября 2013

Технически возникает вопрос, как преобразовать массив NumPy (аналог массива CV2) в объект Mat (CV).Для тех, кто заинтересован, это можно сделать следующим образом:

mat_array = cv.fromarray(numpy_array)

, где mat_array - объект Mat, а numpy_array - массив или изображение NumPyЯ бы посоветовал держаться подальше от старых CV-структур, где это возможно.Массивы Numpy предлагают гораздо лучшую производительность, чем реализации в нативном Python

3 голосов
/ 09 августа 2013

Mat объект был необходим, потому что в C / C ++ отсутствовала стандартная / нативная реализация матриц.

Однако numpy array является идеальной заменой этой функциональности. Следовательно, модуль cv2 принимает numpy.array с, где указана матрица в документах.

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