前提・実現したいこと
C#上で、webカメラから得た画像を基に動体検知を行おうとしています。
画像読み込み用にOpenCVSharpを、データ操作用にNumpy.netをそれぞれ導入し、
コードを組もうと考えたのですが、ライブラリ間のデータの受け渡しで躓いています。
発生している問題・エラーメッセージ
カメラから取り込んだ画像はOpenCV.Matクラスへいったん格納されています。
動体検知(前後フレームを比較し、差分の出た座標の値が255、
それ以外は0となるよう2値化する)を行った後、反応が出た範囲に矩形を描画するため
numpy配列NDarrayにデータを渡したい
矩形の描画に必要な4点の座標を得るべく、反応が出た座標のx軸,y軸それぞれの
インデックスを得るためのnumpy関数np.whereにデータを渡したいのですが、
この2クラス間でデータを受け渡すにはどうすればよいでしょうか?
該当のソースコード
c#
1using OCS = OpenCvSharp; 2using Numpy; 3 4//わけあってプログラム内でcv.ImReadが使用できず、Bitmap形式で 5//カメラの映像を受け取っています 6OCS.Mat cap = new OCS.Mat(); 7Bitmap bmp = new Bitmap(); //仮の宣言 8cap = OCS.Extensions.BitmapConverter.ToMat(bmp); 9 10~ 11//動体検知部 12~ 13 14//矩形描画のための座標算出部 15int[] x, y; 16//ここでnp.whereへMat形式のデータを放り込めずエラー 17np.where(cap > 200, y, x);
試したこと
'OpenCVsharp','numpy','Mat','NDArray'等のキーワードで検索しましたが、
C#上で適用できる方法は見つかりませんでした
ご提示いただいた'Numsharp'を試してみましたが、使用したい関数np.whereを記述したところ
"CS0117 'np' に 'where' の定義がありません"とのエラーが出たため、断念しました
補足情報(FW/ツールのバージョンなど)
OS:Win10
開発環境:VS2019
言語:C#、.NetFrameWork4.6.1
ライブラリ(NuGetパッケージマネージャより):'OpenCvSharp(Ver3,Ver4)',
'Numpy.Bare','Numsharp'
あなたの回答
tips
プレビュー