trong chương trình của tôi Tôi có chức năng lấy hình ảnh từ máy ảnh và phải đóng gói tất cả dữ liệu trong cấu trúc OpenCV Mat
. Từ máy ảnh, tôi lấy chiều rộng, chiều cao và unsigned char*
cho bộ đệm hình ảnh. Câu hỏi của tôi là làm thế nào tôi có thể tạo Mat từ dữ liệu này, nếu tôi có biến toàn cục Mat. Loại cho cấu trúc Mat tôi lấy CV_8UC1.opencv tạo mat từ dữ liệu máy ảnh
Mat image_;
function takePhoto() {
unsigned int width = getWidthOfPhoto();
unsinged int height = getHeightOfPhoto();
unsinged char* dataBuffer = getBufferOfPhoto();
Mat image(Size(width, height), CV_8UC1, dataBuffer, Mat::AUTO_STEP);
printf("width: %u\n", image.size().width);
printf("height: %u\n", image.size().height);
image_.create(Size(image.size().width, image.size().height), CV_8UC1);
image_ = image.clone();
printf("width: %u\n", image_.size().width);
printf("height: %u\n", image_.size().height);
}
Khi tôi thử nghiệm chương trình của tôi, tôi có được quyền width
và height
của image
, nhưng width
và height
của Mat toàn cầu của tôi image_
là 0
. Làm thế nào tôi có thể đặt dữ liệu trong toàn cầu của tôi Mat
varible chính xác?
Cảm ơn bạn.
Xin chào Karlphilip, Cảm ơn bạn rất nhiều vì đã đóng góp vào hoạt động ngăn xếp và trợ giúp chúng tôi. Im mới cho OpenCV và tìm câu trả lời của bạn khá hữu ích cho dự án tôi đang làm việc ngay bây giờ. Tôi có một câu hỏi nhanh, sự khác biệt giữa: cv :: Mat và cvMat và cvCreateMat() là gì? – user261002
'cv :: Mat' là kiểu Mat cho giao diện C++ của OpenCV. 'cvMat' là dành cho giao diện C. 'cvCreateMat()' tạo một 'cvMat' trong giao diện C. Chúng ta không chiếm quyền điều khiển luồng này thêm nữa, nếu bạn có câu hỏi, bạn được tự do hỏi họ trong các chủ đề mới. Hẹn gặp lại. – karlphillip