2013-08-27 32 views
6

Tôi đang cố gắng tạo một Mat có cùng kích thước và loại khác. Tất cả các yếu tố của mới Mat nên không, vì vậy tôi đã cố gắng Mat::zeros(size, type) chức năng, định nghĩa là:Không thể gọi Mat :: số 0 của OpenCV với thông số về kích thước và loại

static MatExpr zeros(Size size, int type); 

Đây là mã của tôi. Giả sử tôi đã có một Mat g (tạo thông qua imread):

Mat h = Mat::zeros(g.size, g.type()); 

này sẽ cung cấp cho tôi một lỗi biên dịch, phàn nàn rằng:

Không có chức năng phù hợp cho cuộc gọi đến 'số không'

gì tôi đang làm sai à?

+0

loại của 'g.size' là gì? – juanchopanza

Trả lời

11

Bạn đã tình cờ gặp một trong các quirks của cv::Mat. Trường size không trả lại cv::Size, mà là cấu trúc Mat::MSize. Điều này MSize có thể được chuyển đổi thành cv::Size bằng cách gọi số operator().

Bạn cần phải gọi như thế này:

Mat h = Mat::zeros(g.size(), g.type()); 
+0

Cảm ơn bạn. Bất kỳ quirks khác tôi cần phải nhận thức? ;-) – cfischer

Các vấn đề liên quan