使用 findContour 和生成的轮廓来近似线段以找到线交点
Posted
技术标签:
【中文标题】使用 findContour 和生成的轮廓来近似线段以找到线交点【英文标题】:Using findContour and the resulting contours to approximate line segments to find line intersection 【发布时间】:2014-02-10 00:29:50 【问题描述】:我正在尝试编写一个程序来处理寻找勾勒出矩形对象(例如计算机屏幕)的线条的交点。我最初尝试使用霍夫线,但是,由于光照条件以及屏幕上出现的内容的变化,绘制的线条并不总是屏幕的轮廓。此外,帧中可能还有大量其他随机对象。
我的下一个方法是使用轮廓,它似乎总是勾勒出屏幕的轮廓,并且能够处理封装在其中的可变内容。如何使用轮廓来逼近一条线?
我用过
print len(contours)
并且始终收到一个相当长的轮廓长度> 200的轮廓。
请随时发表评论,要求清晰。
编辑 绿色“线”是 findContours 找到的轮廓。我主要对围绕屏幕内容的轮廓感兴趣。如何使用这些轮廓找到近似这些轮廓的线,然后找到两条线的交点?这是来自网络摄像头流,因此条件、角度和距离可能不会保持不变。
【问题讨论】:
可以添加/链接图片吗? 【参考方案1】:第一步可能是使用轮廓的大小来过滤掉您不感兴趣的内容,因为较小的轮廓通常对应于屏幕上的内容。
此外,findContour 方法可用于返回嵌套轮廓层次结构中的轮廓。这将告诉您哪个轮廓包含在另一个轮廓中,并允许您获得最外层、第二个最外层等。如果您试图获得屏幕,那么它必须是一个大轮廓,可能是第二个最大并嵌套在监视器轮廓下方。
在获得可能的轮廓(只是点列表)后,您可以通过 RANSAC(使用矩形模型,而不是单应性)或为此修改的霍夫变换仅使用这些点对单个矩形进行稳健拟合案例。
【讨论】:
以上是关于使用 findContour 和生成的轮廓来近似线段以找到线交点的主要内容,如果未能解决你的问题,请参考以下文章