• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Open CVによる動画保存について)

Open CVによる動画保存について

このQ&Aのポイント
  • Open CVを使用してwebカメラから映像を動画として保存しようとしています。フォームアプリケーションで作成した場合にエラーが発生しています。
  • 動画の保存方法はtimerを使用して30msec間隔でカメラから画像を取得し、動画として保存する方法です。
  • cvWriteFrame(rec,srcImage); の箇所でエラーが発生しており、『保護されているメモリに読み取りまたは書き込み操作を行おうとしました。他のメモリが壊れていることが考えられます。』というエラーメッセージが表示されます。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

もうちょっと詳しく読んでみましたが http://opencv.jp/opencv-2svn/c/highgui_reading_and_writing_images_and_video.html#queryframe > 返された画像は,ユーザによって解放されたり変更されたりするべきではありません. > また,エラーが起きて,NULLが返される場合もあります. → cvFlip(srcImage,srcImage,0); でsrcImageを変更している。 (そもそも、この場所でcvFlipする意味がわからない) → エラーのチェックがない と、問題となりそうなことをやってます。 画面表示とファイル出力とで処理のタイミングは当然変わるので、その結果不具合が顕著になっただけかもしれません。 あと、cvWriteFrameが完了する前にタイマー割り込みが発生した場合にも問題が発生しそうです

con014057
質問者

お礼

ご回答ありがとうございます。 いろいろと試してみましたが,cvVideosWriterのFOURCCの設定がまずかったようです。非圧縮だとうまく保存できました(サイズはすごく大きいですが...) アドバイスありがとうございました。

その他の回答 (1)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

あくまで予想ですが > timer1->Enabled=true; この時点でタイマーが動きだして、以下のキャプチャの準備が出来ないうちに タイマー割り込み発生 → timer1_Tick() → captureImage() と呼ばれている、ってことは無いですか?

con014057
質問者

お礼

ご回答ありがとうございます。 アドバイスを元にプログラムを変更しましたが,うまくいきませんでした... cvWriteFrame(rec,srcImage);ではなく,ウィンドウに画像を表示するプログラムなら問題なく動作するのですが...

関連するQ&A