2010-11-23 11 views
10

ためのエンコーダを見つけることができませんでしたが、私はJPGに* IplImageへの変換に使用しています私のコードです:OpenCVの - 指定された拡張子ここ

IplImage* fIplImageHeader; 
fIplImageHeader = cvCreateImageHeader(cvSize(160, 120), 8, 3); 
fIplImageHeader->imageData = (char*) memblock; 

vector<int> p; 
p.push_back(CV_IMWRITE_JPEG_QUALITY); 
p.push_back(10); 
vector<unsigned char> buf; 
cv::imencode("JPEG", fIplImageHeader, buf, p); 

cvReleaseImageHeader(&fIplImageHeader); 

しかし、私はこのエラーを取得しています:

OpenCV Error: Unspecified error (could not find encoder for the specified extension) in imencode, file /build/buildd/opencv-2.1.0/src/highgui/loadsave.cpp, line 409 

が呼び出さTERMINATE 'cv :: Exception'のインスタンスをスローした後 what():/build/buildd/opencv-2.1.0/src/highgui/loadsave.cpp:409:エラー:(-2)指定されたエンコーダが見つかりませんでした拡張機能のimencode

なぜですか?私はOpenCV 2.1をインストールしています。そして、これがjpgエンコーダが存在しなければならないので、明らかに動作します:

cvSaveImage("/home/richard/im.jpg", fIplImageHeader); 
+0

'' JPEG ''の代わりに' 'jpeg' 'と' 'jpg" 'を試しましたか? imencode(http://opencv.willowgarage.com/documentation/cpp/reading_and_writing_images_and_video.html)のドキュメントでは、サポートされている大文字の拡張子を明示的にリストしていません。 – misha

+0

@misha "JPG"、 "JPEG"、 "jpg"、 "jpeg"を試しました。すべて同じエラーです。 –

+1

@misha - ".jpg"のように見えます:) –

答えて

28

[OK]をクリックします。私はこれを理解した。これは動作します:

cv::imencode(".jpg", fIplImageHeader, buf, p); 

拡張子を付ける前に完全停止する必要があることは、ドキュメントのどこかに記載する必要があります。

+0

これはちょうどsadfaceです: – dividebyzero