質問: nBmp; } } } // 予め用意した2枚の画像は共に659*373で、これをbutton等のイベントで2値化するとおよそ0.3秒かかりました。 この処理に関しては調べたものを基に作成したので、BitmapData.StrideからMarshal.ReadByteの辺りがまだ完全には理解してないのですが、ピクセルのRGBを検出するものとしてのBitmap.GetPixel(x,y)は処理が重いことで有名だということで、GetPixelを用いずこのように致しました。 一回の処理で0.3秒かかるため、kinectのカラー画像(1920*1080)はフレーム間隔1/30[sec]で取得するため、そのフレーム間差分をとるにはとてもじゃないですが正常に動作しませんでした。 30fpsで更新されるカラー画像cBmpの差分を取得して、pictureBoxに表示するにはどのような方法がありますでしょうか。又輝度値以外にカラー画像の変化を検出できるものがあれば、教えて頂きたいです。 コードは一部を抜粋したものなので正しくない箇所がいくつかあるかと思いますが、どうぞ宜しくお願い致します。 追記 目的が伝わりにくく失礼致しました。Kinectを使用する理由は、他の機能の実装するためにDepth・Body等も利用したいからです。 例えばですが、以下の2枚を予めBitmapとして用意しておき、上記のGetDifferImageで差分を取って2値化した場合約0.3秒かかりました。KinectのBodyIndexで撮影した人物領域のみ(歩行時)を同じ背景に投影させています。 ![入力画像1](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/9da9da08a2a23a2fc3fe41381d719543.jpeg) ![入力画像2](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/250b638dc58407b8ba1f33fa3406ea6e.jpeg) この2枚の差分を取ったものが以下になります。 ![(入力画像2) - (入力画像1)](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/1b7f557a88002cebabc90e625dbaae13.png) 上の2枚のように、Kinectで歩く様子を撮影する場合30fpsでカラー画像が更新されるので、1回の処理に0.3秒かかってしまうとリアルタイムでの処理が間に合わなくなり?、プログラムがフリーズしてしまいます。 プログラムが止まらないような差分処理の方法が分からないので質問させて頂きました。
回答: 通常のwindowsフォームアプリケーションでやる範疇を超えています。 こういうのはもうゲーム開発の領域です。 C#にこだわるならUnityをおすすめします。 Kinect開発者のための、Unityの基礎知識とインストール