android 如何识别手指在相机镜头上或不在相机镜头上?

how to indentify finger is on the camera lens or not in android?

我正在尝试使用 android 设备中的摄像头测量心跳。

据我所知, 将指尖放在相机镜头上,观察相机画面的变化。 我试过申请 here 但它似乎不正确。

一个解决方案

在 android 中,我们可以在后台打开相机,这样当我们用手指点击覆盖整个相机时,我们可以检查颜色或 RGB。

当我们得到颜色相同的颜色时,我们知道相机完全覆盖手指点击,现在您可以测量心率。

其他解决方案

  1. 从相机抓取图像帧
  2. 将帧的图像指标与上一帧进行比较。您需要弄清楚要使用的指标:亮度、颜色等。
  3. 如果指标在一个方向上存在显着差异,那么您就会心跳加速。
  4. 暂停一段不确定的时间。
  5. 转到 1

其他有用的心率演示 HeartRate Demo

您所要做的就是打开 HeartRateMonitor 应用程序,然后将食指尖放在 phone 的相机镜头上。整个相机预览图像应为红色,指尖接触的区域较亮。不要用力按压,否则会切断血液循环,导致读数不准确。

一两秒后,您应该会看到屏幕顶部的 Android 图标在检测到心跳时开始闪烁红色。十秒钟后,它将计算您的心率并更新 Android 图标旁边的数字。获得准确的心率需要十到三十秒。

请在 Google 代码

上查看此 Post

http://code.google.com/p/android-heart-rate-monitor/issues/detail?id=1#c22

它解释了如何检查手指是否在相机上。

“对于任何感兴趣的人,我想出了如何检测用户的手指是否放在相机上的方法。 在imageProcessing.java中,在decodeYUV420SPtoRedAvg()方法中,我们计算红色像素的平均值。做了一个小实验,我发现当用户将手指放在相机镜头上时,平均值 > 200。在其他情况下,平均值 <200。因此,在 HeartRateActivity 中,您可以在调用 decodeYUV420SPtoRedAvg() 之后添加一个 if 语句,以确定返回的值是 >200 还是 <199。您可以使用它来显示警告框或类似的东西来指导用户把他的手指放在相机镜头上。"