2016-11-22 18 views
1

cv :: imdecode()の1つの機能を満たしました。標準以外のサイズで画像をロードしようとしたときに、Opencv:標準以外のサイズの画像でimdecode()が失敗する

enter image description here

マイC++コード:実行した後

FILE* pf = NULL; 
pf = _wfopen(strFileName, L"r"); 
if (!pf) 
{ 
    return false; 
} 
fread(pFileBuf, 1, nFileSize, pf); 
fclose(pf); 
cv::Mat matRaw = cv::Mat(1, nFileSize, CV_8UC1, pFileBuf); 
cv::Mat matImage = cv::imdecode(matRaw, CV_LOAD_IMAGE_COLOR); 
delete [] pFileBuf; 
SIZE size; 
size.cx = matImage.cols; 
size.cy = matImage.rows; 

matImage.rows = 0と行例えば= 0

、ここでサイズ236x402と.JPGでありますmatImage.data = NULLです。

しかし、1280x720のjpeg画像ではうまくいきます。

アイデア?

pf = _wfopen(strFileName, L"r"); 

+0

ため

pf = _wfopen(strFileName, L"rb"); 

感謝でなければなりません、あなたは "B"(バイナリ)で 'fopen'モードを使用しようとすることができます(' L」を含みますrb "')? "r"だけを使用すると、デフォルトのモードはある変数の値に依存するので、イメージファイルを開くために "b"を使用する方が安全です(私が知っているすべてのイメージファイルとバイナリ構造を持っています)。 – Ped7g

+0

pFileBufのタイプは何ですか? –

+0

[OpenCVでJPEGバイナリデータを処理するにはどうすればいいですか?](http://stackoverflow.com/questions/31831210/how-to-process-a-jpeg-binary-data-in-opencv) – Miki

答えて

0

バグが助け

関連する問題