python - 使用 findContour 和生成的轮廓近似线段以找到线交点

标签 python opencv

我正在尝试编写一个程序来处理查找矩形对象(例如计算机屏幕)轮廓线的交点。我最初尝试使用 hough 线,但是,由于光照条件以及屏幕上出现的内容的变化,绘制的线条并不总是屏幕的轮廓。此外,画面中可能还有大量其他随机对象。

我的下一个方法是使用轮廓,它似乎总是勾勒出屏幕的轮廓,并且能够处理封装在其中的可变内容。如何使用等高线来近似直线?

我用过

print len(contours)

并始终收到轮廓相当长的轮廓长度 > 200。

请随时发表评论以寻求清晰度。

编辑 Example 绿色“线”是 findContours 找到的轮廓。我主要对屏幕内容周围的轮廓感兴趣。我怎样才能使用这些轮廓找到一条近似这些轮廓的线,然后找到两条线的交点?这是来自网络摄像头流,因此条件、角度和距离可能不会保持不变。

最佳答案

第一步可能是使用轮廓的大小来过滤掉您不感兴趣的轮廓,因为较小的轮廓通常对应于屏幕上的内容。

此外,findContour 方法可用于返回嵌套轮廓层次结构中的轮廓。这将告诉您哪个轮廓包含在另一个轮廓中,并允许您获得最外层、第二个最外层等。如果您试图获得屏幕,那么它必须是一个大轮廓,可能是第二个最大并嵌套在监视器轮廓的正下方。

在获得可能的轮廓(只是点列表)之后,您可以通过 RANSAC(使用矩形模型,而不是单应性模型)或为此修改的霍夫变换仅使用这些点对单个矩形进行稳健拟合案例。

关于python - 使用 findContour 和生成的轮廓近似线段以找到线交点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21667162/

相关文章:

python - Django CreateView get_initial 外键

python - django.core.exceptions.ImproperlyConfigured

python - 如何为视频播放器选择文件

python - 将黑白图像转换为数字数组?

c++ - 将 cv::Mat vector 复制到 float vector 的最佳方法是什么?

python - 如何使用OpenCV单击或按下键盘上的任意键来捕获视频并从网络摄像头保存

python - 我应该如何在 Django 应用程序中实现反向 AJAX?

python - 如何在时间序列中的每一天的开始和结束时获取值

c++ - 使用 DFT 进行卷积

python - 在 Windows 上安装 P4Python 时出错