Với OpenCV 2, IPython hiện sử dụng mảng NumPy theo mặc định.Chuyển đổi mảng NumPy thành 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
Kể từ cv2
sử dụng mảng NumPy theo mặc định, không còn bất kỳ cv :: Mat constructor và NumPy không có chức năng chuyển đổi sang một mảng cv::Mat
.
Bất kỳ ý tưởng nào?
Có, điều này đã được trả lời - bạn đang thực sự không bỏ qua đối số thứ hai, nhưng đầu tiên. Tuy nhiên, tôi đến đây với một vấn đề khác: không phải mọi 'numpy.ndarray' thuộc loại' uint8' đều có thể được hiển thị. Tôi đã tạo một slice để lấy một kênh của một hình ảnh, như 'red = frame [:,:, 0]', và sau đó có một ngoại lệ trong 'imshow'. Tôi nghi ngờ đó là vì sự thưa thớt. 'red = frame [:,:, 0] .copy()' đã sửa lỗi đó. –