С OpenCV 2, IPython теперь использует массивы NumPy по умолчанию. неПреобразование массива NumPy в cvMat cv2
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 массивы по умолчанию, больше нет резюме :: Mat конструктора и NumPy не имеет функций для преобразования в cv::Mat
массива.
Любые идеи?
Да, на это уже был дан ответ - на самом деле вы не пропустили второй аргумент, но первый. Тем не менее, я пришел сюда с другой проблемой: не каждый «numpy.ndarray» типа 'uint8' может отображаться. Я сделал фрагмент, чтобы получить один канал изображения, например 'red = frame [:,:, 0]', а затем получил исключение в 'imshow'. Я подозреваю, что это из-за разреженности. 'red = frame [:,:, 0] .copy()' исправлено это. –