私はopencvのVideoWriterを使ってビデオを書き込もうとしています。ここでは、コードがあります:ビデオ内のシフトされた画像
int main() {
//read image from file:
Mat image(cvLoadImage("temp.bmp"));
//create videowriter (DivX codec):
VideoWriter record("output.avi", CV_FOURCC('D','I','V','X'), 30, image.size(), true);
for (int i=0; i<100; ++i) {
//write frame to video:
record<<image;
}
}
は、これは私が書くしようとしていることをイメージ(temp.bmp)、次のとおりです。
(私は、元のBMPファイルをアップロードすることができますが、このPNG結果は同じであってもで - 下記参照)。
しかし、私はビデオ(output.avi)を開いたとき、私はこれを参照してください。ビデオはそれほどずれているのはなぜ
を? different codecsを試してみてcvtColor(CV_BGR2xxx)を使用していますが運がない場合は画像を別のタイプに変換しました。
バグを報告するタイミングはありますか?
あなたは 'DIB' フォーマットを試みたことがありますか? – Eric
@エリック、返信ありがとうございます。私はCV_FOURCC( 'D'、 'I'、 'B'、 '') 'を試しましたが、このエラーが発生しました:' OpenCV Error:サポートされていないフォーマットまたはフォーマットの組み合わせです(Gstreamer Opencvバックエンドはこのコーデックをacutallyサポートしていません。 CvVideoWriter_GStreamer :: open'にあります。私は何かが間違っていた? – ArtemStorozhuk
何が悪いと言うのは非常に困難です。しかし、CvLoadImageがビットマップファイル内の行パッディングを削除できないことが原因である可能性があります。幅が4の倍数の異なる.bmpイメージを試すことができます(この場合、行の埋めはありません)。そして、違いがあるかどうかを確認します。 – nac