我想知道是否可以通过相机检测到运动。该应用程序将在 2 部手机上运行,其中 1 部在 x 点上运行,另一个在 x+ 米上运行,它将用作准确的停止器。
所以我想检测的那种运动是物体高速通过相机(最大 40 KMH)。
所以再一次,这可能吗?
它可以通过比较两个图像来完成。您基本上必须重写 onPreviewFrame(byte[] data, Camera cam) 方法并将默认的 YUV 转换为 RGB:
int[] rgb = ImageProcessing.decodeYUV420SPtoRGB(data, width, height);
创建一个用于运动检测代码的对象:
IMotionDetection detector = new RgbMotionDetection();
调用detect()方法传入上面得到的参数。
boolean detected = detector.detect(rgb, width, height)
如果布尔“检测到”变量为真,则它已检测到运动。
RGB 检测代码位于 RgbMotionDetection.java 类中。图像处理代码位于 ImageProcessing.java 静态类中。将它们捆绑在一起的 Activity 在 MotionDetectionActivity.java 中。