1. 磐创AI-开放猫官方网站首页
  2. Medium

Morse Code Translator检测闪烁-Python、OpenCV、MediaPipe

2021年6月15日

大家好,

我已经有一段时间没有发布教程了,或者说一般的东西。基本上,生活发生了,我决定不分享,而不是分享低质量的内容。今天,我将带你完成一个计算机视觉项目,它会把你的实时视频输入转换成莫尔斯字母,这样你就可以用长或短的眨眼来写信息了。

这个项目的源代码在这里,我也把这个很棒的教程作为样板,如果你想了解更多关于计算机视觉应用的知识,你可以从我发布的链接中查看频道所有者的频道。所以,不要再费劲了,让我们直奔主题吧。here this

至于开头,我想稍微解释一下MediaPipe库,“MediaPipe为直播和流媒体提供了开源的跨平台的、可定制的ML解决方案。”这个定义来自他们自己的网站,简单明了地解释了你可以用这个库做什么,他们提供了其他几个可以运行在不同平台上的解决方案,我将在未来的另一篇文章中解释所有这些解决方案。我们今天要使用的功能叫做“脸部网格”,这个解决方案为我们提供了一个脸部标志性地图,上面有468个最重要的地标,可以在一个人的脸上看到。使用这张地图,我们将计算面部某些特定点之间的比率,并利用这些信息来检测相机上的人是否眨眼。website

在上面的图片中,你可以看到我前面提到的观点,通过这种对人脸地标的访问,你可以进行与面部表情相关的各种检测,另一个提供所有这些功能的很酷的库是Open Face,你也可以查看那个库。OpenFace

为了能够检测眼睛是否眨眼,我们使用代表“眼睛长宽比”的“耳朵”比率来计算眼睛的“耳朵”值,我们需要访问一个人脸部的6个地标。您可以从这里的链接中看到“EAR”是如何计算的,以及我们需要哪些地标。here

现在让我们继续编码部分;首先,我们需要进行所需的导入。我还定义了一个函数来处理帧大小。我们首先定义一个先前的时间变量以便稍后检测FPS,然后为了定义绘图对象以便可以在地标之间绘图,我们创建了FaceMesh对象,最后编辑了绘图规范。

然后,我们定义了2个数组来保存旧的耳值,1个数组用于保存字母,1个布尔数组用于保存长信号,1个用于保存闪烁持续时间,1个用于保存非闪烁边距,1个用于保留闪烁,1个字符串用于保存Morse Code字符串,最后一个用于保存找到的字母。

保存摩尔斯字母表的字典。

我们项目的主循环,读取源图像,50%的高档输入,将OpenCV的BGR转换成RGB,因为MediaPipe中需要它,然后我们取当前时间,用当前时间和上一次时间之差除以1来计算FPS。

如果每个地标都有地标,首先画出它们之间的联系,然后计算EAR值。

如果count大于10,则将其设为零,否则递增1。如果以前的EAR数组大于10,则用新的EAR值更改当前元素,并使Long检查为真。

如果是长的和当前的耳值到9个较老的耳值检查是保持,检测眨眼和递增“blinkedFor”1,如果眨眼是长于0.8秒,然后计数为L(长),否则S(短),否则增加1的不眨眼的时间,如果不眨眼的持续时间是大于2秒(2倍的FPS),如果我们在Morsecode中找到的字母添加到字母数组,如果不仅仅是清除数组。

最后,将找到的数组转换为字符串,然后放到页面上,不过,如果文本中有我的GF的名字(Ece),那么它会自动在末尾添加❤,这让人有点惊讶。:D

大家就到这里吧,我希望教程简单易懂,有趣。这一次我会继续定期出版,没有一天的限制,希望下次能再见到你。:)

最初发表于https://blog.akbuluteren.com.https://blog.akbuluteren.com

原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/06/16/morse-code-translator%e6%a3%80%e6%b5%8b%e9%97%aa%e7%83%81-python%e3%80%81opencv%e3%80%81mediapipe/

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息