Edit: original title “convert numpy array to cvmat” was a mistake – OpenCV’s less than useful error message and my not reading the docs!
With OpenCV 2, IPython now uses NumPy arrays by default.
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
Since cv2 uses NumPy arrays by default, there is no longer any cv::Mat constructor and NumPy has no functions to convert to a cv::Mat array.
Any ideas?
The function has the following docstring:
imshow(winname, mat) -> None.You can see the doc string by typing
cv2.imshow.__doc__in the interpreter.Try
cv2.imshow('Image', cvimage).tl;dr : In original question, first argument of “window name” was missing. “imshow” takes two parameters and only one was supplied.