python - 如何使用 OpenCV 评估 LED 的状态?
问题描述
我刚开始使用 OpenCV,它是一个了不起的框架。对于我当前的项目,我需要通过查看设备的状态 LED 来检测设备的状态。目前,我对所有这些模块和可能性有点不知所措,而且肯定有不止一种方法可以完成工作。我希望有更多经验的人可以向我展示如何解决问题的策略。
但是让我们开始吧,这就是我要说的。从视频流中获取的典型静止帧:
如您所见,相机通常坐在黑暗中,看着这个面板。我用绿色矩形标记了重要部分。从我到现在的理解,我认为这可能是第一种方法。如有误解请指正:
最后,我没有一台设备,而是数千台,并且有 4 或 5 种不同的设备类型。每种设备类型都有典型的固定 LED 排列,如上图所示。可以说,一个固定的签名,但每个 LED 可以处于不同的状态。
由于相机位置和角度可能会有所不同,我认为最好不要简单地定义与每个 LED 相关的像素。我在想这条链:
- 根据面板中 LED 的布局识别设备类型
- 裁剪图像并将图像倾斜到感兴趣的区域
- 将每个 LED 定位为单个属性(每种设备类型都有一组固定的属性 (LED))
- 遍历每个属性并识别其状态(例如关闭/黑暗、红色、绿色、黄色、白色)
因此,换句话说,我认为需要对对象进行分类,然后分析对象的属性(特征?)并将它们映射到具有离散状态的数据点。识别或分类应该使用倾斜的视角,因此可能需要将图像转换为标准化形状并同时裁剪它,以便您丢弃绿色矩形之外的所有内容。
某些 LED 可能已关闭,因此相机将看不到它们。在对象识别方面我将如何处理?
顺便说一句:上面的图像是从我用智能手机拍摄的视频中拍摄的,这肯定不是理想的,因为自动曝光开始了,LED 看起来很亮并产生光晕。最后,我想使用固定曝光的覆盆子相机(v2)来避免这种情况。我希望这个示例仍然有助于理解这个想法。
我的总体想法还可以还是有更好的方法?哪些技术和模块适合每个步骤?提前感谢您的想法和评论。
解决方案
推荐阅读
- android - 如何在每个构建中随机化 ProGuard 字典?
- vb.net - ShellStream 输出包含未知字符
- java - 为了使以下代码起作用,我的图像文件必须位于何处?
- javascript - 在 JavaScript 中使用调用方法和使用“=”运算符的方法借用有什么区别?
- javascript - 是否可以使用 Chrome 开发工具查看当前有多少事件侦听器处于活动状态?
- c# - ShotGun 传播统一 3d FPS 射击游戏
- unity3d - 注册了碰撞但标签错误:伤害
- hook - 加载 Linux 内核模块时,如何使用 `kallsyms_lookup_name` 函数修复`unknown character` 错误?
- python - 熊猫数据框中的(现有)列名未定义错误
- python - 将变量显示为图像