在很多應用中,經常會直接把圖檔的二進制資料進行交換,比如說利用 socket 通信傳送圖檔二進制資料,或者直接用記憶體資料庫(例如 Redis)來傳遞圖檔二進制資料。這個時候,當你的應用程式讀到記憶體裡的二進制圖檔資料時,需要用 imdecode 這個函數:即先構造一個 char 字元串序列的 vector,用來存儲圖檔的二進制資料,然後再轉為 Mat 。
同樣,如果你需要把 Mat 壓縮并寫到一段記憶體塊裡時,就需要使用 imencode 這個函數,使用方法類似。
Mat imgSrc = imread("E:/testbmp/t1.jpg");
imshow("原圖像", imgSrc);
vector<uchar> dataSrc;
//圖像資料編碼入dataSrc,第一個參數指定圖檔格式
imencode(".jpg", imgSrc, dataSrc);
//解碼圖像資料dataSrc入圖像
Mat imgDst = imdecode(dataSrc, CV_LOAD_IMAGE_COLOR);
imshow("解碼圖像", imgDst);
waitKey(0);