問題
在工程應用中,通常有需要用網絡傳輸圖片的需求,考慮網絡帶寬的限制,無法直接將原始圖片進行傳輸。
解決
使用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未聲明錯誤,通常是這個頭文件未被包含