2014年5月14日水曜日

C#:WritableBitmap とIplImageの相互変換

前記事で、KinectではWPFのWritableBitmapを利用することをオススメしました。しかし現実には、Kinectの画像をただ表示するだけでなく、OpenCVで加工するなども処理も必要になります。この辺りの対応については心配なところですが、当然できています。下記のコードに示す通り、WritableBitmapクラスやIplImageクラスが相互変換するためのメソッドを実装しています。

ここで注意点は、2番めと3番目の処理の違いです。いずれもIplImageからWritableBitmapへの変換をしているわけですが、2番めはごっそり入れ替わる事になります。具体的に言えば、WPFのImageクラスのSourceにWritableBitmapを割り当てていた場合、2番めの処理をするとSourceに割り当てていた領域とは違うメモリ領域(アドレス)が割り当てられてしまい、以後、Imageの描画が反映されなくなります。後者の場合は、Sourceに割り当てたWritableBitmapの中身だけを書き換えるので、以後もImageの描画が反映されます。



0 件のコメント:

コメントを投稿