ShaperCV使う時の注意

C++OpenCVをDLL化する方法があるから俺はもう使わないけど、詰まった所を書いておく

  • 開発は2003年で止まっている、cxcoreの配列系の関数がまるごと無い
  • haarcascadeの顔認識のやつとかはできる。サンプルもついてくる
  • 使うときはOpenCVWrapper.dllを読み込む
  • ビルドしてもdllが実行ファイルと同じディレクトリにコピーされないので、HighGUIのエラーが出る。一度bulidしてbin/Debugとbin/Releaseにdllを全部配置すれば次から大丈夫になる
  • ループ処理はThreadで回せるけど、Thread.sleep()ではなくCvWindow.waitKey(int msec)でウェイトを入れないと駄目
  • オブジェクト指向になってるのでCvWindowのタイトルとかをいちいち覚えておいてメモリ解放しなくても良い。インスタンスにclose()だったかそういうのがある
  • OOPになったぶん、メソッドが全て各クラスの下に入っている。それぞれどこに行ったかはソース読んだ方がはやい。大抵CvImage、HighGUI系はCvWindow下に入っているけど
  • Captureをcloseしてもカメラ自体が解放されるのには数秒かかる
  • CvImageからBitmapへの変換方法はこれ http://d.hatena.ne.jp/shokai/20090421/1240325024
  • PictureBoxに貼り付ける時、PictureBoxの大きさが変更されるとメモリリークして落ちる事がある。Delegate介しても同じ。SizeChangedイベント後一定時間表示更新を停止するのをオススメ


なので、時間軸で計算しない静的な画像の加工とか、haarcascade使いたいだけとか、カメラ入力するだけとかならお手軽でいいんじゃないでしょうか
あと、配布もしやすいんじゃないかな。OpenCVだとC++を使うためにWindows Platform SDK関連をインストールしないとならないけど、全部.NETで入ってるのでSharperCVの方が配布しやすそう。


俺はOpenCVで作ったプログラムをデプロイする時、結局どのPlatform SDK入れればいいのかわからなくてVC++ Express2008インストールして解決してしまったけど



こんなの作ってたけど途中で放棄します
http://shokai.org/projects/sharpercv-study/

OpenCV in C# .NET Form Application