OpenCVはコンピュータヴィジョン向けのライブラリ。
画像処理や物体追跡、パターン認識、機械学習などを行える。これでスネーク(輪郭抽出)を行える。私はこのためにひたすら探した。
サンプルコードは『
opencv.jp』や『
OpenCV による画像処理』など。
本も出ている。
C#でOpenCVを使いたい場合は
SharperCVというラッパーがあるが、開発は進んでいない模様。SharperCVで使った画像を、
C#のImageクラスに変換できないのが痛い。自分で作ったラッパーをさらにかぶせたほうが良い。
参考
opencv.jp
OpenCV - Wikipedia
SharperCV Project
下記追加 2008年4月17日
CvImageからBitmapに変換する方法
flatolさんからもらったコメントを追加。
CvImageはSharperCVで画像を扱うためのクラス。Bitmapは
C#で画像を扱うためのクラス。
CvImage ImageFrame;
ImageFrame = capture.QueryFrame();
Bitmap bm = new Bitmap(ImageFrame.Size.width,
ImageFrame.Size.height,ImageFrame.Size.width * 3,
System.Drawing.Imaging.PixelFormat.Format24bppRgb,
ImageFrame.getPixelAddr(0, 0, 0));
OpenCVのラッパーをC\+\+/CLIで作ってはどう?
今、私はSharperCVは使わず、
C\+\+/CLIで
.Net Framework用のラッパーを作っている。
C\+\+/CLIだと、OpenCV用のサンプルコードをほぼ再利用できる。ちょっといじる必要がある時もあるけど。私が必要なのは物体追跡した結果くらいなので、これで十分だ。(そこまでして
C#を使いたいのか! と思うだろうが、ある程度作ったものがあるので……)
ちなみに、『
TechEd2007 のビデオ公開始めました』で『
C\+\+・
C\+\+/CLI・
C# 適材適所』というプレゼンの動画が公開されている。