OpenCV Android比较手指触摸位置到时刻位置

时间:2016-08-03 18:25:58

标签: android opencv image-processing ontouchevent

我有一个Android应用程序,它使用Native OpenCV Library来跟踪摄像机视图中的对象。我使用片刻找到物体的位置:

Moments moment = moments((Mat) contours[i]);
double area = moment.m00;
object.setXPos(moment.m10 / area);
object.setYPos(moment.m01 / area);

我想要实现的是一种查看我的手指触摸Point是否在距物体位置的距离阈值内的方法。然而,Android根据屏幕上的触摸位置计算我的手指位置,而对象的位置是通过矩计算的,我相信当我计算从触摸事件到对象位置的距离时,会导致古怪的结果。有没有办法解决这个问题,或者我是否采取了错误的方式?在此先感谢您的帮助!

其他可能有用的信息:

@Override
public boolean onTouchEvent(MotionEvent event) {
    double x = event.getX();
    double y = event.getY();
    switch(event.getAction()) {
        case MotionEvent.ACTION_UP:
        {
            //jni function. Converts x and y to Point(x, y) and compares its distance to tracked object locations
            GetTouchedPoint(x, y);
        }
    }

    return false;
}


//Native function: p1 is finger touch location, p2 is object location (found by moments)
int ObjectDetector::distance(Point p1, Point p2) {
    int dx = p1.x - p2.x;
    int dy = p1.y - p2.y;
    int distance = sqrt(pow(dx, 2) + pow(dy, 2));
    return distance;
}

0 个答案:

没有答案