【问题标题】:Is there a way to find the speed from analog speedometer? [closed]有没有办法从模拟车速表中找到速度? [关闭]
【发布时间】:2021-08-16 14:03:25
【问题描述】:

我有一个模拟速度计图像,指针指向当前速度。我试图找到一种方法来获得针所指向的速度。我尝试使用来自 OpenCV 的HoughCircles(),但由于图像仅包含速度计并且是半圆形,因此会引发错误。任何帮助我前进的资源将不胜感激。

【问题讨论】:

  • 请分享一些图片。一个想法也是通过颜色或其他方法检测针并计算针的角度以获得速度。
  • 那是一张真实的照片吗?它看起来渲染。如果它已被渲染,而您无法访问用于渲染它的数据,那么您可能会假设该事物始终在同一个地方,您需要做的就是检测具有独特颜色的针,并且找到它的角度。
  • 你的问题不是很好。图像总是居中吗?它总是垂直观察还是有时倾斜观察?针总是红色的还是有时是蓝色的?还是绿色? speedo上的范围总是0..140吗? 0 mph 总是在同一个角度吗?你试过什么代码?
  • @MarkSetchell 是的,图像始终居中,针为红色。一切都是不变的。

标签: python opencv computer-vision


【解决方案1】:

假设指针的颜色与车速表的其余部分不同,或者它的尺寸明显大于车速表上的其他元素(通常是这种情况),我将执行以下操作。

  1. 将图像转换为灰度。
  2. 应用颜色阈值(或基于大小的阈值)来检测代表针的像素区域。
  3. 在 OpenCV 中使用 HoughLines() 或 HoughLinesP() 函数将线条拟合到您在步骤 2 中检测到的形状。
  4. 现在需要测量您在第 3 步中生成的线的角度(此处提供的示例:How can I determine the angle a line found by HoughLines function using OpenCV?
  5. 然后,您可以通过一个简单的公式将线的角度映射到速度(需要查看速度计的图像才能生成此公式)。

告诉我进展如何。

【讨论】:

  • 感谢您的步骤。我能够根据您的参考获得针的角度。但在那之后一直坚持获得实际速度。
  • 我会说逆时针方向,以水平 x 轴为零,大约 -30 度将是 140 公里/小时,210 度将等于 0 公里/小时。您应该能够使用此信息提出一个将角度和速度联系起来的方程式。
  • 为什么要将霍夫变换应用于单个形状?您可以轻松确定线的两个端点,或通过所有像素坐标拟合线性方程。许多选项比霍夫变换简单得多。
  • 谢谢!我能够得到当前的速度。
  • @CrisLuengo:我提出了一种类似于 OP 方法的方法,并采用了 OP 已知的内置函数。我同意有多种更简单的实现方式。
猜你喜欢
  • 2022-01-16
  • 2019-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-25
  • 1970-01-01
  • 2012-03-15
  • 1970-01-01
相关资源
最近更新 更多