簡體   English   中英

如何將Opencv Mat轉換為JPEG char數據

[英]How to convert Opencv Mat to JPEG char data

最近,我在將OpenCV從網絡攝像頭捕獲的Mat幀轉換為普通JPEG無符號字符數組時遇到麻煩。 我在Google上嘗試了一種或兩種方法,但結果似乎不是正確的jpeg uchar數組。 這是我的一段代碼:

 VideoCapture cap(0);
 if(!cap.isOpened())
    return -1;
 Mat frame;
 cap >> frame;
 if( frame.empty()) 
    return -1;
 int size = frame.total() * frame.elemSize();
 unsigned char* buffer = new unsigned char[size];
 memcpy(buffer, frame.data, size * sizeof(unsigned char));

然后我用fwrite將緩沖區寫入file.jpg (看起來很傻,但是如果緩沖區正確,它確實可以工作),但是無法打開文件或將其確定為jpeg圖像。

誰能幫我解決這個問題?

imencode()出OpenCV函數imencode() 它將使用編碼為正確圖像類型(基於文件類型參數)的數據填充緩沖區,以便可以將其寫入文件,並且其他程序將知道如何處理該文件。

當前方法的問題是,您試圖將原始圖像數據寫入JPEG,但是JPEG是一種壓縮數據格式,因此程序將不知道如何處理已寫入的數據。 這相當於獲取一個二進制文件並將其另存為JPEG,該文件將沒有正確的標頭被解碼為圖像,否則數據無論如何都可能與JPEG格式不匹配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM