(这是上一个问题的后续行动)。
我能够成功地使用 OpenCV / Hough 变换来检测图片中的线条(扫描文本);起初它会检测很多行(每行文本至少一行),但通过反复试验调整“阈值”参数,它现在只检测“真实”行。
(“阈值”参数取决于图像大小,如果必须处理不同分辨率的图像,这有点问题,但那是另一回事了)。
我的问题是霍夫变换有时会检测到只有一条线的两条线;这两条线彼此非常接近并且(显然)平行。
=> 如何确定两条线几乎平行且彼此非常接近?(这样我只能保留一个)。
如果您使用标准或多尺度霍夫,您最终将得到极坐标中线条的 rho 和 theta 坐标。Rho 是到原点的距离,theta 通常是检测到的线与 Y 轴之间的角度。在不研究opencv中霍夫变换的细节的情况下,这是这些坐标中的一般规则:两条线将几乎平行并且彼此非常接近:-它们的thetas几乎相同并且它们的rhos几乎相同或-它们的thetas相距近 180 度,并且它们的 rho 值彼此接近
我希望这是有道理的。
有趣的是,theta 是直线和 y 轴之间的角度。
通常,rho 和 theta 值可视化为从 x 轴到与所讨论的线垂直的线的角度。rho 就是这条垂直线的长度。因此,theta = 90 和 rho = 20 将意味着从原点向上 20 像素的水平线。霍夫变换问题上显示了一张漂亮的图片