我有一个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;
}