私はプログラミングが初めてで、javacv を使用して画像処理を行っていますが、iplimage のマウス イベントを使用して座標を見つけるのに問題があります。私は基本的に、左クリックボタンを使用して iplimage の (x,y) 座標を取得したいと考えています。誰かがこの関数の使用方法の基本的な例を教えてくれたら、とても感謝しています。私はオンラインで見ましたが、見たものはすべてかなり混乱していました. パラメータが cvSetMouseCallback("string", on_mouse, null) であることはわかっていますが、 on_mouse が何であるかはわかりません。
1 に答える
1
したがって、このメソッドを使用するコードのスニペットは次のとおりです。
cvNamedWindow("LKpyr_OpticalFlow", CV_WINDOW_AUTOSIZE);
cvShowImage("LKpyr_OpticalFlow", imgC);
CvMouseCallback on_mouse = new CvMouseCallback() {
@Override
public void call(int event, int x, int y, int flags, com.googlecode.javacpp.Pointer param) {
System.out.println("point = (" + x + ", " + y + ")");
}
};
cvSetMouseCallback("LKpyr_OpticalFlow", on_mouse, null);
cvWaitKey(0);
on_mouse の質問に答えるには、単純にマウスのコールバックです。つまり、マウス イベントが発生するとどうなるでしょうか。上記のコードでは、簡単な CvMouseCallback が call メソッドをオーバーライドして実装されています。このコードでは、x 座標と y 座標が標準出力に表示されます。 元のクラス CvMouseCallbackのコードはここにあります。
では、何がコールバックを呼び出したのかをどうやって知るのでしょうか? これは、呼び出すイベント パラメータで指定されます。区別する通常の方法は、イベントに対して switch ステートメントを実行することです。たとえば、左ボタンは に対応しCV_EVENT_LBUTTONDOWN
ます。したがって、左ボタンのみを印刷する場合は、偶数が上記の定数と等しいことを確認してください。
于 2014-01-29T20:15:05.887 に答える