Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用OpenCV评估LED的状态?_Python_Opencv_Object Detection_Feature Detection - Fatal编程技术网

Python 如何使用OpenCV评估LED的状态?

Python 如何使用OpenCV评估LED的状态?,python,opencv,object-detection,feature-detection,Python,Opencv,Object Detection,Feature Detection,我刚刚开始使用OpenCV,它是一个令人惊叹的框架。对于我当前的项目,我需要通过查看设备的状态指示灯来检测设备的状态。目前,所有这些模块和可能性让我有点不知所措,当然,完成事情的方法总是不止一种。我希望有经验的人能给我一个解决问题的策略 但让我们开始吧,这就是我要说的。从视频流中获取的典型静止帧: 正如你所看到的,相机通常坐在黑暗中,看着这个面板。我用绿色矩形标出了重要的部分。据我所知,到目前为止,这可能是第一种方法。如果有误解,请纠正我: 最后,我没有一台设备,而是几千台,有4到5种不同的设

我刚刚开始使用OpenCV,它是一个令人惊叹的框架。对于我当前的项目,我需要通过查看设备的状态指示灯来检测设备的状态。目前,所有这些模块和可能性让我有点不知所措,当然,完成事情的方法总是不止一种。我希望有经验的人能给我一个解决问题的策略

但让我们开始吧,这就是我要说的。从视频流中获取的典型静止帧:

正如你所看到的,相机通常坐在黑暗中,看着这个面板。我用绿色矩形标出了重要的部分。据我所知,到目前为止,这可能是第一种方法。如果有误解,请纠正我:

最后,我没有一台设备,而是几千台,有4到5种不同的设备类型。每种设备类型都有一个典型的固定LED排列,如上图所示。可以说,是一个固定的签名,但每个LED可以处于不同的状态

由于摄像机的位置和角度可能不同,我认为最好不要简单地定义与每个LED相关的像素。我想到了这个链条:

  • 根据面板中LED的布局确定设备类型
  • 裁剪图像并将其取消倾斜到感兴趣的区域
  • 将每个LED定位为单个属性(每个设备类型都有一组固定的属性(LED))
  • 迭代每个属性并确定其状态(例如关闭/暗、红、绿、黄、白)
  • 因此,换句话说,我认为需要对对象进行分类,然后分析对象的属性(特征?),并将它们映射到具有离散状态的数据点。识别或分类应使用倾斜的透视图,因此可能需要将图像转换为标准化形状,并可能同时对其进行裁剪,以便将绿色矩形之外的所有内容都扔掉

    某些指示灯可能已关闭,因此相机无法看到它们。当涉及到对象识别时,我将如何处理这个问题

    正如旁注:上面的图像是从我用智能手机拍摄的视频中拍摄的,这肯定不是理想的,因为自动曝光开始了,LED看起来很亮并产生光晕。最后,我想使用固定曝光的覆盆子相机(v2)来避免这种情况。我希望这个示例仍然有助于理解这个想法

    我的总体想法行吗,还是有更好的方法?哪些技术和模块适用于每个步骤?提前感谢您的想法和意见


    更新:

    关于进行对象识别,以及某些LED关闭,您可能需要等待一段时间,然后选择“变亮”混合模式合成多个帧,以便在特定时间段内获得所有LED的位置。然后,一旦显示面板类型被识别,我假设它不会改变。也许这会给你一些想法@马克:你说得对,这是个好主意。是的,一旦初始化,面板类型不会改变。在fmw42:有趣的文章中,一旦我有了一个规范化的图像,并且已经知道了对象的类型和结构,这可能会引起人们的兴趣。