• ベストアンサー

動画の処理

プログラミングでHelloWorldに毛が生えた程度のことしかできないのに、動画の処理をしなきゃいけなくなりました。 できれば自宅のパソコンでやりたいと考えています。(Windows2000) まず、フレーム間差分からやってみようと思っているのですが、どうやって手をつけていいかさっぱりわかりません。 おすすめの言語、HP、書籍などを教えて欲しいです。 アドバイスとかもいただけると嬉しいです。 よろしく御願いします。

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

  • ベストアンサー
  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.2

1. 動画ファイルから各コマの内容を取り出す。 2. 各コマの内容を比較する。 3. 比較結果を(何らかの形で)出力する。 という処理になるのでしょうが、最後の3.以外はどれもけっこう大変です。最初から1.と2.を同時にやろうとせず、一方ずつ片付けましょう。 1.の目処は立っていますか? MPEGファイルから1コマずつ取り出すにはDirectShowを使うのが楽ですが、「DirectShowって何ですか?」という状態の場合、それでも大変でしょう。 動画ファイルから連続したコマをBMPファイル等に変換するフリーウェアがいくつかあるようですので、そういったものを使って何十枚、何百枚とBMPファイルを作って、静止画を相手にしたほうがよさそうな気がします。 2.は、いきなり動画を相手にしようとしても無理ですから、まず2枚の静止画の内容を比較することから始めましょう。静止画は、いちばん取り扱いの簡単なBMPファイルがいいでしょう。 BMPファイルを読み込んで、内容を調べたり変更したりして、またBMPファイルを出力する・・・というサンプルプログラムは、探せばいろいろ出てきます。 例えば、Googleに「bmp 画像処理」というキーワードを入れて検索すると 画像処理のプログラム http://indy.doshisha.ac.jp/~watabe/Image/n2000/ のようなページがヒットします。

tarariu
質問者

お礼

明確な回答ありがとうございます。大変勉強になります。 処理の流れもわかっていなかったので、こんなに大変そうだとは思っていませんでした。 正直、「DirectShowって何ですか?」という状態です。 BMPファイルを作ることから始めていきます。

その他の回答 (2)

  • joe-
  • ベストアンサー率34% (11/32)
回答No.3

directshowを使ってMPEGファイルを再生する単純なサンプルです。 http://www.geekpage.jp/programming/directshow/renderfile.php directshowを使って動画内のフレームをBMPファイルとして保存するサンプルです。samplegrabberを使っています。 http://www.geekpage.jp/programming/directshow/samplegrabber.php

参考URL:
http://www.geekpage.jp/programming/directshow/
tarariu
質問者

お礼

ありがとうございます。 参考にさせていただきます。

noname#12761
noname#12761
回答No.1

最初にお断りしておきますが私は動画処理についてはアドバイスできる立場にはありません。(つまり知識もスキルもないと言うこと) フレーム間差分と言う事は MPEG フォーマットの動画処理と言うことでしょうか。 通常はそこまで作り込まないで既成の codec を利用したり VB なんかでしたら 動画用のコントロールを貼り付けてハイ終わりって感じですが・・・ 私は回答できないと思いますが ・謙遜しないで tarariu さんの使える言語や実際のスキルのレベル(HelloWorld に毛が生えた程度の人なら「フレーム間差分」なんて言葉は出てきませんから) ・動画のフォーマットやどんな機能を実現する必要があるのか 等もう少し具体的に提示しないと回答は得られないような気がします。

tarariu
質問者

お礼

ご指摘ありがとうございます。 画像処理の本を勉強してましたので、技術自体には多少の知識があるのですが、プログラムはほとんどやったこと無いです。 使える言語はCとJavaで、本を見ながらなら基本構文とJavaで簡単な図形を書ける程度です。 動画はアナログビデオで撮ったものをキャプチャーでとりこんだもの、拡張子がmpeg、それ以外の詳しいことは自分でもよくわかんないです。(すみません、勉強し直します) 実現したいことは、人間のスポーツの初動作の検出です。(例、陸上や水泳のスタートとか) プログラム以外での方法とかも全然わからないので、皆様にいろいろ教えていただきたいです。

関連するQ&A