繁体   English   中英

使用实时视频源监视Python中的模拟量规

[英]Using real time video feed to monitor analog gauge in Python

我希望这里有人可以帮助我解决这个问题。 我试图找出一种很好的方法,当看起来像这样的压力表达到一定的可变压力时,使用实时视频供稿运行python 0script。

我非常有信心,因为将压力计安装在图像框架中的固定位置上应该不会太困难,但是这种东西是新手,真的不知道从哪里开始。

有什么建议么? 提前致谢!

这个问题可能比您想象的要难得多。 通常,人们使用OpenCV解决图像处理/模式识别问题。 文档中提供了许多关于Python的出色教程。

从根本上讲,您的问题是弄清楚针的旋转角度。 然后从那里可以计算出压力是多少。 如果幸运的话,您可以使用特征检测+全息照相术找到针头,然后计算角度。 但是我怀疑这种图像会导致特征检测。

模板匹配可以找到针,但是它对旋转非常敏感,因此您必须生成大量具有不同针角度的模板,然后每次想要读取压力时都要遍历所有模板。

使用电子压力表读取压力可能会更快,更便宜且更容易。 您可以通过多种方法将电子仪表的输出输入Python。 某些仪表可以连接到网络。 有些可以作为串行端口与RS232 / 422或USB通信。

如果您可以找到带有数字显示屏的仪表,则进行某种OCR /模板匹配以从摄像机读取显示屏会更加简便。

编辑:

@jeremy arsenault的评论促使我想到了另一种解决方案。 如果您主要专注于检测指针何时超过阈值,则可以寻找表盘的前缘。 您可能会更看向没有指示器的表盘中央。

这种图像确实很容易将其转换为黑白阈值。 表盘是黑色的,背景(至少朝向中间)是白色的。 对图像进行某种形态和阈值处理后,您可以寻找表盘的黑色像素。 无需模板匹配。 下面的图片说明了一些想法。 第一张图片是您的图像阈值为黑白。 初始图像非常干净,但是如果您是从相机中抓取的,则可能必须先进行一些模糊形态处理,然后再设置阈值以确保在不需要的地方没有杂散的黑色像素。 第二张图像有一个叠加的圆圈,您可以在其中寻找黑色像素。 您可以找到前缘,后缘以及平均值,以获得相当精确的中心值。

阈值图像 环形感兴趣区域

一些更多的实现细节/伪代码。 对于计算机图像,原点通常在左上角,+ y向下。 另外,我定义了随着压力增加而增加的角度θ。 圆的参数方程为

x = x0 - r*cos(theta + theta0)
y = y0 - r*sin(theta + theta0)

theta0是使压力为零的偏移角度(对于所示压力计,该角度为-45度左右。寻找针头的蛮力方法是开始从零开始扫掠角度,然后逐渐增大,直到在x,y处找到黑色像素为止。持续增加,直到在x,y处找到一个白色像素为止,两个角度的平均值给出了针的中心,您应该能够计算压力。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM