opencv圖像壓縮與解壓(imencode&imdecode)


問題

在工程應用中,通常有需要用網絡傳輸圖片的需求,考慮網絡帶寬的限制,無法直接將原始圖片進行傳輸。

解決

使用opencv中的imencode與imdecode函數進行圖像壓縮與解壓

imencode

Mat img;
int quality = 50; //壓縮比率0~100
vector<uint8_t> imageData;
vector<int> compress_params;
compress_params.push_back(IMWRITE_JPEG_QUALITY);
compress_params.push_back(quality);
imencode(".jpg", frame, imageData, compress_params);

imdecode

vector<uint8_t> p_data = imageData;
Mat image = imdecode(p_data,CV_LOAD_IMAGE_COLOR);
//Mat image = imdecode(p_data,-1);

包含頭文件

#include<opencv2/opencv.hpp>
#include<opencv2/imgcodecs.hpp>
#include<opencv2/imgcodecs/legacy/constants_c.h> //出現CV_LOAD_IMAGE_COLOR未聲明錯誤,通常是這個頭文件未被包含


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM