我正在尝试开发一个使用手机上的相机闪光灯传输莫尔斯电码的应用程序。我的传输部分工作正常。我根据 DOT 或 DASH 打开闪光灯,并根据 GAP、LETTER_GAP 和 WORD_GAP 关闭闪光灯。所有 DOT、DASH、GAP、LETTER_GAP 和 WORD_GAP 都有不同的持续时间,它们将在其打开或关闭的时间段内。
我很难弄清楚如何在接收器端对此进行解码......我正在使用 opencp 二进制阈值来查看图像中是否存在亮点。根据相机 fps,我可以计算有多少帧连续打开或关闭闪光灯,这决定了点/破折号/间隙。这是示例。
从发射机电话说我正在发送“abc xyz”作为字符串。在接收器电话上,我得到了这些字符串
. -#- .*. .#- .*- . - .*. -#- .*- -#- -*.*. 在哪里,
“。” - 点“-” - 破折号“*” - 间隔“#” - 字母间隔“” - 单词间隔
这个字符串正好代表“abc xyz”。问题是我想不出一种方法来接收电话从哪里开始寻找新消息以及何时停止,因为一切都是使用光信号发送的。发送和接收之间没有同步。我的意思是接收器无法识别开始和结束信号,因为我只是处理 opencv 提供的原始相机帧。有什么办法可以强加这些吗?或进行检测/解码的替代解决方案?
如果我不清楚,请告诉我。谢谢你!