0

我有一个根据数据编码方案改变颜色的圆圈。例如,我想在那个圆圈的颜色变化中编码消息“你好”。这意味着从红色到绿色的过渡(实心圆的颜色从红色变为绿色)可以解码为二进制 1,从绿色到蓝色的过渡可以解码为 0。所以我的信息可以是以这种格式编码。我的发射器这部分已经准备好了。

现在我希望能够使用 Android 相机通过图像处理算法接收这些编码数据。我是图像处理的新手,经过一番研究后,我发现我可以在我的应用程序中使用 OpenCV 或 JavaCV。你建议我应该使用哪一个,我应该遵循什么方法?我已经能够创建一个可以实时检测圆圈的应用程序。但是,我无法思考下一步该做什么。我遵循了 opencv 示例中的 color_blob_detection 示例,并且我知道如何检测帧中的特定颜色。

在这里,我开始感到困惑。

  1. 我应该继续检查所有帧中的红、绿、蓝三种颜色吗?有没有办法确定每个帧中相同的百分比,以便我可以将百分比与两个连续帧进行比较并说有一个过渡?**

  2. 我是否应该在 500 帧的帧缓冲区中缓冲几帧,然后从缓冲区中一一开始处理我的帧。这可以考虑以提高帧速率,因为在这种情况下我的 onPreviewFrame() 方法代码将减少到最低限度。**

请建议我应该怎么做?发送器将继续一次又一次地发送相同的消息,我不介意修复我正在发送的位/字节数。我只需要识别以这种方式传输的“ID”。

4

1 回答 1

0

我真的对你的第一个问题感到困惑。某些颜色的计算百分比不是图像处理吗?为什么您认为检查三种颜色可能会更昂贵?

关于第二个问题,所需的帧速率取决于您的协议。如果转换发生在 10 Hz,您只需要 10 FPS 来破译它们。

另一方面,可以将帧数据复制到一边,并在单独的线程中将其放入队列中进行处理,这样就不会卡住 onPreviewFrame() 循环(这是Android应用程序主线程)。

于 2013-05-17T20:50:58.210 回答