繁体   English   中英

在javacv中使用cvSetMouseCallback

[英]using cvSetMouseCallback in javacv

我对编程还不陌生,我一直在使用javacv进行图像处理,但是在使用鼠标事件为iplimage查找坐标时遇到了麻烦。 我基本上想使用鼠标左键获取iplimage的(x,y)坐标。 如果有人可以给我一个有关如何使用此功能的基本示例,我将不胜感激。 我在网上看了看,发现的所有东西都很混乱。 我知道参数是cvSetMouseCallback(“ string”,on_mouse,null),但是我不知道on_mouse是什么。

因此,使用此方法的代码片段为:

    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问题,它只是一个鼠标回调。 换句话说,发生鼠标事件时会发生什么? 在上面的代码中,已通过重写call方法实现了简短的CvMouseCallback。 在此代码中,x和y坐标显示为标准输出。 代码可以在这里找到适合的原班CvMouseCallback。

那么,您怎么知道什么叫做回调? 这是在要调用的event参数中给出的。 区分的通常方法是对事件执行switch语句。 例如,左按钮对应于CV_EVENT_LBUTTONDOWN 因此,如果只希望打印左键,请确保偶数等于上述常数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM