C#でOpenCVを使用する(OpenCVSharpを使用)
Use Opencv C
1.OpenCVSharpとは何ですか
CsharpでOpenCVプログラムを作成する問題を解決するために、私は綿密な調査を行い、非常に効率的な方法(GOCW)を実装しました。最近、データを収集するときにOpenCVSharpを時々見ました。開発の中で、直接引き出したり、直接使用したりする場所はたくさんあるはずです。
OpenCVSharpは、https://github.com/shimat/opencvsharpで日本のエンジニアによって開発されました。これはOpenCVの.NETラッパーであり、Emgucvよりも元のOpenCVに近く、LGPLでリリースされ、商業的に使いやすい(基本的にBSDと同等の)多くのサンプルリファレンスがあります。
2. OpenCVSharpの特徴は何ですか?
- より多くのOpenCVメソッドを直接パッケージ化し、学習の難しさを軽減し、EmguCVよりも使いやすく
- それらのほとんどはIDisposableインターフェースを継承します。これは、usingステートメントを使用するのに便利です。
- オリジナルスタイルのOpenCVメソッドを直接呼び出すことができます
- 画像オブジェクトは、GDIで使用されるビットマップおよびWPFWriteBitmapに直接変換できます。
- モノをサポートします。
3、VSでのOpenCVSharp環境構成
2つの方法があります。1つはNuGet(Library Package Manager)を使用する方法で、この構成をリリースする方法は別の直接ダウンロードパッケージを学ぶ価値があります。
最初の方法:[ライブラリパッケージマネージャー]があるかどうかに関係なく、[ツール]オプションでNuGet(ライブラリパッケージマネージャー)を使用し、最初にVSを開きます。
お持ちでない場合は、NuGetを自分でインストールしてください。
Https://jingyan.baidu.com/article/066074d636fd19c3c21cb0a2.html(Baiduから転載)
インストール後、[ツール]-> [ライブラリパッケージマネージャー]-> [ソリューションNuGetパッケージの管理]を開き、OpenCVSharpを検索して、適切な[インストール]をクリックします(できれば最新のものをインストールします)。常に完了を待っています。
インストールが完了したら、インストールファイルのDLLファイルをプロジェクト実行可能ファイルのデバッグフォルダに配置する必要があります。インストールされているファイルを見つける方法は?
2番目の方法は、インストールパッケージを直接ダウンロードすることです。
https://github.com/shimat/opencvsharp/releases
ダウンロード後、フォルダ(任意のフォルダ)に解凍します
ファイルがインストールされたら、[ソリューション]の[参照]-> [参照の追加]を右クリックし、[参照]を選択して、ダウンロードしたファイルのOpenCvSharp.dllファイルを参照に追加します。
ファイルにダウンロードされますOpenCvSharpExtern.dllは、実行可能ファイルのDebugフォルダーにコピーされます。すべての構成はOKです。次のテストは正常に構成されています。。
最初の方法を使用する場合、2番目の方法を使用する場合はDLLファイルが自動的にコピーされることに注意してください。自分でコピーする必要があります。
4、テストコード
using System.Collections.Generic
using System.Linq
using System.Text
using System.Threading.Tasks
using OpenCvSharp / / Add the corresponding reference
namespace OpenCVSharpTest2
{
class Program
{
static void Main(string[] args)
{
Mat source = new Mat(@'1.bmp', ImreadModes.Color)
Cv2.ImShow('Demo', source)
Cv2.WaitKey(0)
}
}
5、原則
OpenCVSharpの実装について予備的に理解した後、驚くべきことに加えて、それがどのように実装されているかを知りたいと思います。結局のところ、私は多くの方法を考え、GOCWに多くの時間を費やしました。
マスターコードをダウンロードします。開くにはvs2017が必要です。
ここでは、構造からわかります。OpenCVsharpExternはc ++コードであり、もう1つはCsharpコードです。予想どおり、CLRパッケージである必要があります。 341に大きく依存しています
OpenCV関数のパッケージが多数含まれているOpenCVSharpは、かなりの作業を行う必要があります。
6、予備要約
OpenCVSharpはemgucvと比較して非常に合理化されていますが、コード容量も大きくなっています。これは主に、OpenCVを移植したい場合、必然的に多くの反復作業を行う必要があり、OpenCVをアップグレードするたびに
両側を同期的にアップグレードする必要がある可能性があります。ですから、GOCW方式の方が適切だと思います。つまり、インターフェイスプログラムがインターフェイスを担当し、車輪の再発明の作業を行わないでください。
そうは言っても、このプロジェクトにはまだ探索する価値のある場所がたくさんあります。これを読んでくれてありがとう、私は助けたいと思っています。