1

mjpeg ファイルの各 jpg イメージを変更する必要があります。

Visual Studio C++ 2010 を使用する必要があります。

これまでのところ、a) ソースから mjpeg ファイルをロードし、b) ビットマップ (CImage、バイト配列など) を抽出する必要があります。

擬似コードでは、次のようになります。

fun getBitmap(filename, timestamp)
{
  MJPEG myInput = Open(filename);
  BITMAP myOutput = myInput.getBitmap(timestamp);
  return myOutput;
}

この問題を解決する方法は何でしょうか? 私はすでに OpenCV2.1.0 を試してみましたが、常に LNK2001 エラーが発生します。(公式サイトからのチュートリアル)。

OpenCVは正しい方法ですか、それとももっと簡単な方法を知っている人はいますか?

4

2 に答える 2

1

ビデオでJPEG画像を使用しますか、それともとにかく解凍しますか?

MJPEGストリームは、通常のJPEGヘッダー(およびコードディクショナリ)を含まない、多数のJPEG画像で構成されます。したがって、それらをロスレスで抽出し、ディレクトリに多数のJPEGファイルを取得したい場合は、別のツールの方が適している場合があります。

ただし、とにかくそれらを変更する場合は、それらを解凍する必要があります。OpenCVは、ストリームをデコードするために必要なバックエンドがある限り、これを行うための優れた方法です(Windows用の一部のコーデック... Linuxでは、ffmpegライブラリがほとんどすべてをデコードします)。

だから私はこのようなことをします:

CvCapture *capture = cvCaptureFromFile("filename.avi");
IplImage *current_frame = NULL;
while(current_frame = cvQueryFrame(capture)) {
  process(current_frame); // that's your modification code
}

これを参照してください:

http://opencv.willowgarage.com/documentation/c/highgui_reading_and_writing_images_and_video.html

リンカエラーの場合:LNK2001は「未解決の外部シンボル」なので、ライブラリを追加しましたか?(追加の依存関係、4つすべてのライブラリ(cv210.lib cxcore210.lib、cvaux210.lib、highgui210.lib、または... OpenCVインストールで正しい名前を確認してください)を追加します。プロジェクトが32ビット(または同じ)でコンパイルされていることを確認します。 OpenCVとして)、ライブラリへのパスを追加することを忘れないでください。

于 2011-02-18T21:05:59.497 に答える
1

gstreamer ツールの使用

IP ベースのソースの場合

gst-launch souphttpsrc location="http://[ip]:[port]/[dir]/xxx.cgi" do-timestamp=true is_live=true ! multipartdemux ! jpegdec !  videoflip method=vertical-flip ! jpegenc !  multifilesink location=image-out-%05d.jpg

mjpeg コーデックと avi コンテナを使用したファイル ソースの場合

gst-launch filesrc location="xyz.avi" ! multipartdemux ! jpegdec !  videoflip method=vertical-flip ! jpegenc !  multifilesink location=image-out-%05d.jpg
于 2011-12-12T20:28:50.157 に答える