動画をカメラ→PCに取込みbitmap検知したい

[戻る]
かいな 2007/01/11(木) 07:58:06
実は、動画をPCにUSBインターフェースでつながるカメラから取り込んで、リアル
タイムに、今、カメラの前に物体があるのかないのか、そして、もしあるとするなら
ば、その物体は、丸いものなのか、正方形のものなのか、それとも長方形のものか、三
角のものなのか、程度でいいので、
検知したいのですが、
その場合、どんなカメラとOS・ドライバーを買うのがいいのでしょうか?
(できるだけ、安価で使いがっってのいいものがよい)
また、その時の、読み取るファイルのフォーマットなども教えていただけないでしょう
か?
できるだけ自分で、C言語で手作りでも検知できるような感じで、
融通性のある認識システムにしたいと考えています。

モーヲタ 2007/01/11(木) 09:39:18
>リアルタイムに、今、カメラの前に物体があるのかないのか、そして、もしあると
>するならば、その物体は、丸いものなのか、正方形のものなのか、それとも長方形の
>ものか、三角のものなのか、程度でいいので、検知したい
カメラ自体にそのような機能があって、かつ、プログラム側にその情報を
伝えてくれるインターフェース等があれば可能でしょうけど、まずそのような
カメラは無いでしょう。よってDirectShowで静止画像として取得し、その
静止画像のバイナリデータから自前でそのような認識をする処理を作成する
事になるでしょう。かなりハードルは高いと思いますよ。

>どんなカメラとOS・ドライバーを買うのがいいのでしょうか?
まずは、そのような機能を持ったカメラがあるのかどうかから
調べてはいかかでしょうか?

>読み取るファイルのフォーマット
DirectShowを使うのであれば静止画像はビットマップデータになります。

>融通性のある認識システム
全部自分で作るとなるとかなり難しいと予想します。
ネットでそのようなライブラリ等が見つかれば楽にはなると思います。

モーヲタ 2007/01/11(木) 09:54:25
ちょこっとだけ調べてみました。
いくつかありますね。参考程度にしてください。
(有償のSDKもあるっぽいですね)

http://www.cqpub.co.jp/toragi/TRBN/trsample/2003/tr0302/0302sp9.pdf
http://avsc.jp/products/product3.html
http://www.evolution.com/jp/software/vision2.masn

他にもまだまだありそうな感じです。
あとはご自分で調査されてください。

かいな 2007/01/12(金) 07:28:24
いろいろ、教えていただいてありがとうございます。
こういうことは、一般的なUSBケーブルのある、デジカメでも
出来るのでしょうか?

モーヲタ 2007/01/12(金) 12:37:21
>一般的なUSBケーブルのある、デジカメでも出来るのでしょうか?
調査されました?ネットでググれば出来そうか出来ないか位の
情報は集めれそうですけど・・・。

DirectShowで行う事を前提にするのであれば、そのデジカメが
DirectShowにて捕まえられれば静止画像を取得できるでしょう。
・・・の前に、デジカメって静止画のみの事を言ってますか?
動画機能も持っているデジカメの事を言ってますか?

何にせよ、DirectShowでイメージデバイス(カメラやスキャナ等)を
捕まえられなければSDK等を買って開発するしか無いでしょうね。

ITO 2007/01/12(金) 13:13:14
>こういうことは、一般的なUSBケーブルのある、デジカメでも
>出来るのでしょうか?
リアルタイムに動画をUSB出力するデジカメがあれば別ですが。
まず見たことないです。

目的は何ですか?
工場の生産ラインラインや、研究開発等で使われるなら、
モーヲタさんが調べたサイトのようなシステムが必要だと思います。
あと、オムロン・キーエンスもあたってみてください。
専用の開発ライブラリーもあると思います。

通りすがり 2007/01/12(金) 14:30:22
>リアルタイムに動画をUSB出力するデジカメがあれば別ですが。
1000円でUSB64MBメモリ兼デジカメ兼Webカメラな商品はみたことありますが
…。640*480(15FPS)/320*240(30FPS)しか画素ないし、これはネタ用か。

一般的なビデオキャプチャデバイスとして認識されるデジカメなら可能ですが、一
般的なデジカメのうちどれくらいが対応しているかは知りませんし、ビデオキャプ
チャ用デバイスドライバもインストール必要があります。
ビデオキャプチャ用デバイスドライバは標準でインストールされることは少ないとも
思います。
接続中のパソコンからカメラを制御して写真を取らせるソフトが付いている一般
向けのデジカメも見た事ありますが、どれくらいその規格が普及しているかは分か
りません。
一応プレビューも出ていたのでそういったデジカメならビデオキャプチャデバイスとし
て使えると思いますが。

正直ただのWebカメラ買ってきたほうが早いと思います。

かいな 2007/01/14(日) 11:10:49
みなさん

いろいろ、情報ありがとうございました。
おかげさまで大いに参考になりました。
http://www1.tst.ne.jp/h-yoko/ruin/tech/webcam/index.html
に、
CCapDS
と言う名前のVC++6かBORLAND C
で動くライブラリーがあるようです。

ところで、これをダウンロードして、viewer,exeを作ろうとしているのですが、
VC++6で、makefileに対して、
makeのかけ方というのはどうやればいいのでしょうか?
コマンドプロンプトから
make
とだけ命令を出したのですが、
bcc32:Command not Found
のメッセージを出して止まってしまいます。
makefile
でやってみても、makefileは、内部コマンドおよび外部コマンドとして 
認識されません、ということではじかれます。

επιστημη [HomePage] 2007/01/14(日) 11:33:02
nmake ではどうでしょう?

超初心者 2007/01/14(日) 11:59:31
bcc32ってBORLANDのコンパイラっぽいな。
VC6用のmakefileまたは
コマンドラインのパラメタでVC6用に動作させることになると思う。
無い場合は自分でmakefileをVC6用に直すことになるのかな。
BORLANDでしか使えないライブラリとかあると大変かもしれない。

モーヲタ 2007/01/14(日) 15:54:40
http://www1.tst.ne.jp/h-yoko/ruin/tech/webcam/index.html
>に、CCapDSと言う名前のVC++6かBORLAND C
>で動くライブラリーがあるようです。
私もホントにこのライブラリで物体認識が可能かどうか
DLしてソースコードを見ましたが、残念ながら
これってDirectShowのカメラ制御(静止画抽出)のみの
機能しかないようです。
かいなさんが言われている三角形や四角形を認識するという処理は
無いようですね。

よってやはり画像の物体認識を行う処理は自前で作るか
SDKを買うか、フリーのライブラリを探さないといけませんね。
とはいってもカメラ制御処理も必須なのでこれはこれで
一歩前進したと言えるでしょう。

ITO 2007/01/14(日) 17:00:59
>2007/01/12(金) 13:13:14
にも書いたんですが、使用目的は何ですか。

生産の品質管理・研究開発等に関わるものだと
それ相応の装置が必要になります。

防犯・趣味等に使われるなら
市販のCCDカメラ + 若干の制御ソフトライブラリー
で十分だと思います。

かいな 2007/01/14(日) 17:47:31
みなさん。
再度、いろいろ、お返事ありがとうございます。

> 防犯・趣味等に使われるなら
> 市販のCCDカメラ + 若干の制御ソフトライブラリー
> で十分だと思います。

私自身は、趣味で使い、デジカメも、LOGICOOL社の
QCAM CONNECTというWEBカメラ(これは¥4000くらいでした)
桃っているのですが、要は、動画をリアルタイムで取り込みながら、
カメラの前に移っているものをある程度、物体判別できればいいなと考えているのと、
従来の自分のVC++でのコードにも、付加機能として、
それを実装できればいいな、と考えています。

モーヲタ 2007/01/14(日) 18:04:40
>カメラの前に移っているものをある程度、物体判別できればいいなと考えている
>のと、従来の自分のVC++でのコードにも、付加機能として、
>それを実装できればいいな、と考えています。
その肝心の物体認識はどのように実装されようと思っていますか?
DirectShowだけでは物体認識は行えませんよ。
自前で作るのは至難の業のような気がします。とても難しいと思いますよ。
(あくまで私の想像ですが・・・)

かいな 2007/01/14(日) 21:01:04
nmakaでも、bcc32が内部コマンドないし外部コマンドとして認識されません。
のエラーです。

>その肝心の物体認識はどのように実装されようと思っていますか?

DirectShowで、2次元のマップ展開が読めるのですね。

ここは割とここは単純に考えていて、
私のあくまで想像ですが、
物体のあるところの座標が1が立っていて、
ないところは0が立っている。
だから、少なくとも、円のものがあるか四角のものがあるか三角のものがあるか
を判別する場合は、円の輪郭を少しずつ大きくしていって、エッジのところの
距離の2乗和を取ればいいのではないかと思います。
三角のものでも同じようにやる。四角でも。
わくを少しずつ大きくしていく。座標も少しずつずらしながらやっていく。
それで、2乗和が最小になったもので、形を判断する、と。
でも、時間はかかりそうですよね。
たとえば、これが無理でも、前に物体があるかどうかは少なくとも
判断できるでしょう。
大きいものか小さいものかもね。
モノがカメラの前に来たら、画素はどこかで、0か1かでビット反転するんですから。
大きいものなら、ビット反転する範囲も大きくなる。
と、実に、安易に考えています。
でも、頓珍漢なことを言っているかもしれないので、どなたか、こういった画像のビッ
トマップファイルのフォアマットを教えていただけると嬉しいです。
私のQCAM CONNECTのUSBカメラだと、画像録画スタートと録画終わりの
ボタンがソフトで組み込まれて、おそらく、画像スタートを押すと、
その時点から、どこかのメモリに、画素情報が、1秒に最大30フレームずつ入って来
るはずなのですが、どこに入ってくるんですかね。そこをVC++6で、0.1秒おき
とかずつに、アクセスすれば、いいのかな、と思ったりもしています。
ソフトの中に

モーヲタ 2007/01/14(日) 21:51:14
>物体のあるところの座標が1が立っていて、
>ないところは0が立っている。
何を持ってこれ(物体のあるところ=1、物体のないところ=0)を判断するのです
か?
単純に画素の色の違いですか?
1ピクセル当たり色はRGBそれぞれ256階調あります。
単純に2階調グレースケールに変換して0と1(つまり白と黒)で
判断するという意味ですか?これでもかなり無理があるとは思いますが。。。

>円の輪郭を少しずつ大きくしていって、エッジのところの
>距離の2乗和を取ればいいのではないかと思います。
これは良く意味が分からないです。

>これが無理でも、前に物体があるかどうかは少なくとも
>判断できるでしょう。
>大きいものか小さいものかもね。
>モノがカメラの前に来たら、画素はどこかで、0か1かでビット反転する
>んですから。大きいものなら、ビット反転する範囲も大きくなる。
これも同じく、何を根拠にそう判断できるのか知りたいですね。
もしかして背景画像は同じままで何か物体が来たらビット配列の
色情報が変化するからそう考えている???

>画像スタートを押すと、
>その時点から、どこかのメモリに、画素情報が、1秒に最大30フレームずつ
>入って来るはずなのですが、どこに入ってくるんですかね。
>そこをVC++6で、0.1秒おき
>とかずつに、アクセスすれば、いいのかな、と思ったりもしています。
だからこれを実現するためにDirectShowを使うのではないのですか?
自分のアプリからカメラに付属したソフトウェアの取得した静止画データの
メモリは取れないでしょう?

古いスレッドには追加発言できません。