C# 如何使用emgucv/opencv/Aforge.Net/Accord.Net在50-100 ms内实时检测仪表中的指示灯和状态(开-关、颜色、闪烁)
检测指示器的仪表图像 [![用于检测指示器的仪表图像][1][1] 我想实时跟踪仪表上每个指示器的当前状态。两个指示器可以在不同的时间点显示在同一位置 为了实现速度表指示器检测,我尝试了以下方法C# 如何使用emgucv/opencv/Aforge.Net/Accord.Net在50-100 ms内实时检测仪表中的指示灯和状态(开-关、颜色、闪烁),c#,opencv,image-processing,computer-vision,emgucv,C#,Opencv,Image Processing,Computer Vision,Emgucv,检测指示器的仪表图像 [![用于检测指示器的仪表图像][1][1] 我想实时跟踪仪表上每个指示器的当前状态。两个指示器可以在不同的时间点显示在同一位置 为了实现速度表指示器检测,我尝试了以下方法 背景减法 在这种方法中,我们在测试前已在关闭状态下存储了仪表的基本图像。然后我们在开始测试后捕获每一帧,并从基础图像中减去这一帧。然后我们检查减法图像中的感兴趣区域(指示器位置),如果检测到指示器大小的斑点,我们认为指示器处于打开状态,否则如果未检测到斑点或小尺寸斑点,我们认为指示器处于关闭状态 上述实
[![点火关闭状态下前雾灯亮起的图像][3][3]
很高兴向我们展示您的思维过程 问题: 对于这种形状检测和变化,最大的问题是泛化。指示的形状是一致的(对象),但场景会发生变化(背景)。这种“启发式”方法不会返回好的结果,因为变化量很大 解决: 你应该采用机器学习的方法来解决这个问题,详细说明你自己的指标和标签数据集,组织一切并训练你自己的解决方案
PS:我带来的大多数技术并没有按照问题的要求用C#(主要是Python和C++)实现,但一旦推理模型(SVM、CNN等)得到训练和生成,新版本的EmguCV就可以无缝地导入和使用它们 很高兴向我们展示您的思维过程 问题: 对于这种形状检测和变化,最大的问题是泛化。指示的形状是一致的(对象),但场景会发生变化(背景)。这种“启发式”方法不会返回好的结果,因为变化量很大 解决: 你应该采用机器学习的方法来解决这个问题,详细说明你自己的指标和标签数据集,组织一切并训练你自己的解决方案
PS:我带来的大多数技术并没有按照问题的要求用C#(主要是Python和C++)实现,但一旦推理模型(SVM、CNN等)得到训练和生成,新版本的EmguCV就可以无缝地导入和使用它们 感谢@Guigerme Vogt的回复。我想澄清几点。由于一个指标将有一张图片(即1个指标==1个培训样本),它会工作吗?同样,如果查询指标没有经过培训,它会将其映射到错误的指标,因此有可能获得keras CNN的信任吗?谢谢@Guigerme Vogt的回复。我想澄清几点。由于一个指标将有一张图片(即1个指标==1个训练样本),它会工作吗?同样,如果查询指标没有训练,它会将其映射到错误的指标,因此有可能获得对keras CNN的信心吗?在这个应用中,模板匹配应该有利于找到指标。如果拍摄图像的摄影机的位置不变,且目标区域始终保持相同大小且不旋转,则此情况成立。我会尝试不同的方案,@andrew使用模板匹配上述两种不同表示的前雾灯场景不一致?你能推荐一些工作吗?@PratikThorat我想试试