我希望这里有人能帮我解决这个问题。当看起来像这的压力表达到一定的可变压力时,我正试图找到一种使用实时视频提要来运行python0Script的好方法。
我很有信心,这不应该是太困难,因为量规将安装在一个固定的位置,在图像框架,但这是新的东西,真的不知道从哪里开始。
有什么建议吗?提前感谢!
发布于 2018-05-15 17:28:27
这个问题可能比你想象的要困难得多。通常,人们使用OpenCV来解决图像处理/模式识别问题。有许多优秀的有关Python的教程可在文档中获得
在它的核心,你的问题是计算出旋转角度的针。然后,从那里,你可以计算什么是压力。如果你幸运的话,你可以用特征检测+单形找到针头,然后计算角度。但我怀疑这种图像是否会导致特征检测。
模板匹配将能够找到针头,但它对旋转非常敏感,因此您必须生成大量不同针角的模板,然后每次需要压力读取时都会遍历所有模板。
它很可能更快,更便宜,更容易使用电子压力表来读取压力。有很多种方法可以将电子计量器的输出输入Python。一些量规可以连接到网络上。有的可以作为串口与as 232/422或USB进行通信。
如果你能找到一个带有数字显示器的量规,那就应该更直截了当地做一些OCR/模板匹配来从照相机读取显示器。
编辑:
@杰里米·阿瑟的评论让我想到了另一个解决方案。如果你的注意力主要集中在当针头越过一个阈值时,你可以寻找刻度盘的前缘。你可以多看看刻度盘的中心,那里没有指示器。
这种形象真的可以很容易地转换成黑白。刻度盘是黑色的,背景(至少朝向中央)是白色的。在你做了一些形态学和你的图像的阈值,你可以寻找刻度盘的黑色像素。不需要模板匹配。下面的图片说明了其中的一些想法。第一张图片是你的图像被分割成黑白的。开始的图像非常干净,但如果你是从相机上抓取,你可能需要做一些模糊,形态学之前,阈值,以获得没有流浪的黑色像素,你不想要它们。第二个图像有一个叠加的圆圈,你可以在那里寻找黑色像素。你可以找到前缘,后缘和平均值,以得到一个相当精确的中心值。
一些更多的实现细节/伪代码。对于计算机图像,原点通常是左上角,+y向下。同时,我定义了随着压力的增加,角θ的增加。圆的参数方程是
x = x0 - r*cos(theta + theta0)
y = y0 - r*sin(theta + theta0)
theta0是提供零压力的偏置角(图中的量规在-45度左右)。寻找针的强力方法是从零开始扫描角度,直到在x,y处找到一个黑色像素。然后继续增加,直到在x,y处找到一个白色像素。这两个角度的平均值给出了针的中心,你应该能够计算压力。
https://stackoverflow.com/questions/50354682
复制相似问题