Tôi có bộ đệm unsigned char*
chứa dữ liệu của hình ảnh jpeg. Tôi muốn hiển thị hình ảnh đó bằng cách sử dụng C++ và opencv. Nếu tôi làm:opencv đọc hình ảnh jpeg từ bộ đệm
Mat img(Size(640, 480), CV_8UC3, data);
namedWindow("image", 1);
imShow("image", img);
Tôi nhận được một mớ hỗn độn pixel.
Tôi cho rằng đó là do dữ liệu là jpeg (có tiêu đề). Bởi vì công trình này:
Mat imgbuf(Size(640, 480), CV_8UC3, data);
Mat img = imdecode(imgbuf, CV_LOAD_IMAGE_COLOR);
NHƯNG tôi không thể sử dụng chức năng imdecode vì nó là từ highgui.h mà là dựa trên GTK 2, và trong dự án của tôi, tôi sử dụng GTK 3.
Vì vậy, làm thế nào tôi có thể hiển thị dữ liệu đệm? Có cách nào để giải mã hình ảnh jpeg khác với imdecode trong opencv, nếu đó là vấn đề. Tôi thực sự không muốn phải xây dựng lại opencv với Qt ...
Bất kỳ đề xuất nào khác?
(Sử dụng Linux)
Bạn không thể sử dụng 'libjpeg' để giải mã và được thực hiện với nó? Vấn đề là gì? – mmgp
@mmgp Tôi sẽ thử libjpeg, chỉ nghĩ rằng tôi có thể làm cùng một điều mà không bao gồm một thư viện khác. – Matekk
opencv sẽ không tải hình ảnh jpeg nếu bạn làm không có 'libjpeg', vì vậy không có thư viện nào khác được đưa vào. – mmgp