OpenCvSharp の利用手順
はじめに
ShaperCV プログラミングでのトラブル - BiBoLoGの解決を諦めることにした.それで,利用しやすそうだと思ったから,OpenCvSharp を選んだ.
リンク
手順
GitHub - shimat/opencvsharp: .NET Framework wrapper for OpenCVを見ただけではダメだった.
成功する一例
- OpenCvSharp-Beta-20081114.zip を入手し,適当なフォルダに展開する
- D:\Develop\OpenCvSharp とした
- chopencv-2.5.0-win-binary.zip を入手し,適当なフォルダに展開する
- D:\Develop\chopencv-2.5.0-win-binary とした
- ch と 2.5.0 の意味する内容については後で書く
- VC# 2008 EE を起動し,新規プロジェクトを作成する
- Windows フォーム アプリケーションで,OpenCvSharpTest と名付けた
- 参照の追加から OpenCvSharp.dll を登録する
- 既存項目の追加から chopencv-2.5.0-win-binary/chopencv/bin/ 以下の DLL を追加する(http://svn.coderepos.org/share/lang/cpluspluscli/OpenCvSharp/sample/OpenCvSharpSample/ にあるファイルから察した)
- cv100.dll
- cxcore100.dll
- highgui100.dll
- libguide40.dll
- 追加した DLL のプロパティ「出力ディレクトリにコピー」属性を「新しい場合はコピーする」に変更する*1
- Program.cs に次のコードを記述し,実行する
using System; using System.Runtime.InteropServices; using KwsmLab.OpenCvSharp; namespace OpenCvSharpTest { static class Program { /// <summary> /// アプリケーションのメイン エントリ ポイントです。 /// </summary> [STAThread] static void Main() { using (IplImage image = new IplImage(128, 128, BitDepth.U8, 1)) { image.Zero(); for (int x = 0; x < image.Width; x++) { for (int y = 0; y < image.Height; y++) { int offset = y * image.WidthStep + x; byte value = (byte)(x + y); Marshal.WriteByte(image.ImageData, offset, value); } } using (CvWindow window = new CvWindow(image)) { CvWindow.WaitKey(); } } } } }
OpenCV 1.0 のDLLを追加していないとき
次のメッセージを見る.このエントリを書くとき,30分くらい詰まった.
System.IO.FileNotFoundException はハンドルされませんでした。 Message="指定されたモジュールが見つかりません。 (HRESULT からの例外: 0x8007007E)" Source="OpenCvSharpTest" StackTrace: 場所 WindowsFormsApplication1.Program.Main() 場所 System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args) 場所 System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) 場所 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 場所 System.Threading.ThreadHelper.ThreadStart_Context(Object state) 場所 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 場所 System.Threading.ThreadHelper.ThreadStart() InnerException:
ch と 2.5.0 の意味する内容
chopencv-2.5.0-win-binary.zipというファイルは今回使用しません。こちらはChと呼ばれるインタープリタ型C/C++言語プラットフォーム用のものです。
第2回 OpenCVを使ってみよう:OpenCVで学ぶ画像認識|gihyo.jp … 技術評論社
よくわからん.
*1:複数選択で一括に変更できる