从图像中提取钟针

时间:2019-07-17 08:21:52

标签: python opencv computer-vision feature-extraction

我目前正在开发一个应用程序,用于从模拟时钟的图像中提取时间。从图像中提取手时出现问题。

我目前正在使用霍夫圆环提取时钟面,然后执行精巧边缘检测并拨打图像。然后,最后进行霍夫线变换以提取手。但是,“霍夫线”变换也会在时钟的边缘检测到一些错误的线,并且数字与时钟指针一起出现。

为解决此问题,我尝试过,获取时钟的中心并检查该点是否位于已检测到的线上,因为时钟的指针始终穿过该中心。但是,霍夫线并非总是100%准确,中心线也不总是如此,因此并非所有人都通过中心线。无论如何,有没有看线是否经过点附近?

这是示例图片:

enter image description here

可以看出,霍夫变换原本可以检测到这些线,但是它们并未完美地穿过原点。因此它们被丢弃了。

1 个答案:

答案 0 :(得分:1)

您可以使用此处给出的公式计算点与线之间的距离:https://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line

公式本身有点复杂(这就是我只发布链接的原因),但是如果您具有行的坐标,则应该可以使用它。

如果将A称为中心点,则此距离的确切定义为the distance between A and the point of the line that is the closest to A。我想您可以使用阈值来过滤掉离中心太远的线。但是请注意,如果您的线段是与中心对齐但没有通过的线段(例如,如果它是一个远离中心的数字),则阈值方法仍会产生该线段。