Loading [MathJax]/jax/output/HTML-CSS/config.js

2017-02-04

OpenCVSharpでテンプレートマッチング処理(OpenCV3.0対応)

OpenCVSharpでテンプレートマッチング処理。OpenCV3.0対応の記述です。
前バージョンとは若干の記述(クラス)が違いますが、基本的には同じですね。

private OpenCvSharp.Point getTemplateAreaLocation(Mat matTarget, Mat matTemplate, int LocFlag) {
Mat result = new Mat(matTarget.Height - matTemplate.Height + 1, matTarget.Width - matTemplate.Width + 1, MatType.CV_8UC1);
OpenCvSharp.Point minPoint = new OpenCvSharp.Point();
OpenCvSharp.Point maxPoint = new OpenCvSharp.Point();
try {
Cv2.MatchTemplate(matTarget, matTemplate, result, TemplateMatchModes.CCoeff);
Cv2.MinMaxLoc(result, out minPoint, out maxPoint);
}
catch (OpenCvSharp.OpenCVException ee) {
System.Diagnostics.Debug.WriteLine(ee.ErrMsg);
}
if (LocFlag == 0) {
return minPoint;
}
else {
return maxPoint;
}
}


OpenCVSharp:Mat変数の渡し方に注意

ちょっと初歩的なところで躓いたのでメモ書き。OpenCVSharpのプログラムで、
Mat mat = new Mat()
methodA(mat);
methodB(mat);
みたいなことをしました。各メソッドはほぼ同じことしてます。が、後者のメソッドが思ったように動かないケースに遭遇し、ちょっと格闘しました。

Matは基本参照渡し
結論(解決策)は、Matは基本参照渡しだということ。つまり、methodA内で変数matを処理したら、呼び出し元でも反映されているということ。つまり、上記の例では、Aに渡されるmatとBに渡されるmatは別物です。
もし、同じmatを渡したいなら、closeメソッドでコピーを作ってそれを渡しましょう。

2017-02-03

XAML の UI デバッグツールを無効にする


最近、やっとVisual Studio2015を使い始めたのですが、実行するとなにやら変な物が出ます。上の画像みたいな黒いやつです。これは、
  • 実行中の WPF アプリケーションのビジュアル ツリーやツリー内の任意の要素のプロパティを検査することができます(Visual Studio日本チームBLOGより
という優れものらしいですが、とりあえず今の私には不要なので、邪魔。。。

というわけで、消し方ですが、
  • デバッグ > オプション メニューより、デバッグ > 全般 > XAML のUI デバッグツールを有効にするのチェックを外す
で解決です。

ホントは、使いこなせたほうがいいんでしょうけど、とりあえず。