ページ 11

kinect for windows 開発

Posted: 2012年7月19日(木) 17:47
by revo
「kinect for windows」で開発をしています。
現在、PCを2台用意し、1台にはwebカメラ、もう1台にはkinectをつなぎ、kinectを用いて背景マスクした人物像を
もう1台のwebカメラで取得した映像に合成するというシステムを開発しようとしています。
kinectで背景マスクし、人物像を取り出すところまではできたのですが、webカメラの映像を背景に合成する方法がわかりません。

開発環境は
OS:Windows 7(64bit)
tool:Visual Studio 2010 (c#)
です。

最終的には2台をIP通信で、ビデオ電話できるようにしたいと思っています。

c#かc++での開発を考えています。
初心者なのでわかりやすーく教えていただけると本当に助かります!

よろしくお願いします。

Re: kinect for windows 開発

Posted: 2012年7月19日(木) 17:58
by softya(ソフト屋)
申し訳ありませんがマルチポストはフォーラムルール違反となっています。
http://dixq.net/board/board.html
相互にリンクして頂ければ問題ありませんのでお願いします。

「現在「kinect for windows」で開発をしています。 現在、PCを2台用意し、1台にはwe... - Yahoo!知恵袋」
http://detail.chiebukuro.yahoo.co.jp/qa ... 1390934028

Re: kinect for windows 開発

Posted: 2012年7月19日(木) 18:02
by revo
互いにURLを張りました。
ルールを把握しておらず、申し訳ありませんでした。

Re: kinect for windows 開発

Posted: 2012年7月19日(木) 18:06
by softya(ソフト屋)
リンクを確認しました。
取り出せた人物画像の背景がアルファチャンネルで透明か一色で塗られていれば合成は可能だと思いますが、webカメラの映像はOpenCVなどで処理しているのでしょうか?

Re: kinect for windows 開発

Posted: 2012年7月19日(木) 18:17
by revo
kinectの人物背景画像は白一色で塗りつぶしています。

コード:

// 出力バッファ(初期値は白(255,255,255))
            byte[] outputColor = new byte[colorPixel.Length];
            for (int i = 0; i < outputColor.Length; i += Bgr32BytesPerPixel)
            {
                outputColor[i] = 255;
                outputColor[i + 1] = 255;
                outputColor[i + 2] = 255;
            }
webカメラ映像にはまだOpenCVも何も処理を行っていません。
私の甘い考えだと、取得したwebカメラ映像にそのまま人物像を重ねればいいのかな、なんて思っていたのですが
こちらにも処理をかける必要があるのでしょうか?

Re: kinect for windows 開発

Posted: 2012年7月19日(木) 18:23
by softya(ソフト屋)
Webカメラの表示ウィンドウと人物画を表示する透明ウィンドウを重ね続ければ可能ですが、ウィンドウ移動中ズレたり何かの拍子に表示順番が逆になれば人物が消えますね。
不安定なのであまり使わない方法です。

「フォームウィンドウの特定の色を透明にする: .NET Tips: C#, VB.NET」
http://dobon.net/vb/dotnet/form/transparencykey.html

Re: kinect for windows 開発

Posted: 2012年7月19日(木) 18:37
by revo
そうなんですか。
安定したシステムを作りたいので、ただ重ねるのは避けようと思います。
他にどのような処理方法が考えられるか教えていただけませんでしょうか?

Re: kinect for windows 開発

Posted: 2012年7月19日(木) 18:45
by softya(ソフト屋)
C++とOpevCVなどでWEBカメラの映像を取り込んで1つのウィンドウで合成すれば良いと思いますが、WEBカメラの取り込む部分だけC++/CLIとOpenCVで作って他部分はC#で行うということも可能だと思います。

[補足]
OpenCvSharpと言うC#用のライブラリもあります。