我正在使用 OpenCV4Android FaceDetection 示例。我有一个带有当前斑点脸矩形的全局表:
private Rect[] facesArray;
还有全局浮动来存储 onClick 坐标,
private float onClickX;
private float onClickY;
从 onTouchEvent 生成:
@Override
public boolean onTouchEvent(MotionEvent e) {
onClickX = e.getX();
onClickY = e.getY();
switch (e.getAction()) {
case MotionEvent.ACTION_DOWN:
// something not important for this matter happens here
}
return super.onTouchEvent(e);
}
在返回带有视图的垫子之前的 onCameraFrame 方法中,我正在做:
Core.circle(mRgba,new Point(onClickX,onClickY), 40, new Scalar(0, 255, 0, 255));
那么会发生什么。我在 onTouchEvent 中获取并发送到全局变量的坐标上画了一个绿色的小圆圈。这些变量(onClickX、onClickY)由 onCameraFrame 读取并用于 core.circle() 函数。我的问题是,圆圈不是在我的手指下精确绘制的,而是总是在右下角。这就是发生的事情: https ://dl.dropboxusercontent.com/u/108321090/device-2013-07-24-004207.png
每当它在屏幕上时,这个圆圈总是与我的手指处于相同的方向/位置,并在左上角遇到它,在右下角消失(在屏幕外)。我尝试使用 getRawX,geyRawY -> 结果是一样的,我不明白为什么 get 命令不返回精确的点击位置,而是在它附近的某个地方。我不知道如何解决这个问题。