[英]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.