- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想检测图像中的矩形。
我使用 cv2.findContours()
和 cv2.convexHull()
过滤掉不规则多边形。
之后,我将使用船体长度来判断轮廓是否为矩形。
hull = cv2.convexHull(contour,returnPoints = True)
if len(hull) ==4:
return True
但是,有时,convexHull()
会返回一个长度为 5 的数组。如果我使用上面的标准,我会错过这个矩形。
通过使用上面的方法,我将得到船体:
[[[819 184]]
[[744 183]]
[[745 145]]
[[787 145]]
[[819 146]]]
这是我的问题:给定一个长度为 5 的数组 (Convex Hull),我如何确定它是否实际上指的是四边形?谢谢。
============================================= ======================更新:
使用Sobel X和Y方向后,
sobelxy = cv2.Sobel(img_inversion, cv2.CV_8U, 1, 1, ksize=3)
最佳答案
嗯,这不是提取矩形的正确方法。由于我们在这里讨论基础知识,我建议您对图像进行反转并在 X 和 Y 方向应用 Sobel,然后运行 findcontours 函数。然后用这个你将能够得到很多你可以过滤掉的矩形。您将不得不应用大量检查来识别其中包含文本的矩形。另外我不明白你为什么要强制选择长度为 5 的矩形。你在限制比例。
其次,另一种方法是使用 Sobel X 和 Y 图像,然后应用 OpenCVs LineSegmentDetector。一旦你得到所有的线段,你必须为(Quad fit)应用 RANSAC 所以这里的条件应该是一组随机选择的相交线上的所有角度应该是锐角(大致),最后用文本过滤掉四边形 roi(为此使用 SWT 或其他可靠的技术)。
对于您的查询,您应该选择理想长度为 4(点)的四边形。
引用:Crop the largest rectangle using OpenCV
此链接将为您提供以非常简单的方式检测矩形的要点。
下图为您提供了图像反演和 sobel 的演练。图像反转消除了您从 sobel 获得的双边界。
对于反转,您使用波浪号运算符。
同样在进行反转之前,最好抑制照明伪影。这可以使用同态过滤来完成。或记录图像。
关于python - ConvexHull 检测矩形(四边形),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39071418/
我在 numpy 中有一组点,我通过 (scipy.spatial.ConvexHull 而不是 scipy.spatial.Delaunay.convex_hull) 计算它们的 ConvexHul
我无法理解如何计算 n 维点是否在 n 维 ConvexHull 内。 这里提出了一个非常相似的问题(相同): What's an efficient way to find if a point l
这是我的输入二值图像: 现在我想用 OpenCV 得到它的凸包。为此,我编写了以下代码: cv::Mat input = cv::imread("input.jpg", CV_LOAD_IMAGE_G
我正在尝试使用 scipy.spatial(来自 scipy.spatial import ConvexHull)绘制一系列点的凸包。 import pylab as pl from scipy.sp
我想检测图像中的矩形。 我使用 cv2.findContours() 和 cv2.convexHull() 过滤掉不规则多边形。 之后,我将使用船体长度来判断轮廓是否为矩形。 hull = cv2.c
请大家帮帮我。我有个问题。我从图像中进行了凸包检测。 然后,我在 ConvexHull 边界内的区域上填充颜色时遇到了问题。 有没有人可以帮我在ConvexHull边界内的区域填充颜色? 请帮助我实现
我需要实现一个 C++ 代码来计算点的 ConvexHull 并返回索引,但我找不到用 C++ 实现的方法? 在 Matlab 和 Python 中,您只需将点数组传递给 ConvexHull 函数并
我正在尝试生成随机凸多面体。我生成一组随机 3D 坐标,然后找到它们的凸包(到目前为止一切顺利)。 然后我想我会使用 Delaunay 三角剖分来给我凸包的三角剖分。这是我的基本理解开始显现的地方!
我关注了this链接以制作点 vector 。为了计算给定点的面积,我使用了凸包。为此,我遵循了 this .当我尝试计算 convexHull 内的面积时,发生以下错误。正如我在将 vector 点
我正在运行一个基于 Debian 的操作系统,上面安装了 python。我使用 apt-get 安装了 scipy,但是当我尝试使用 scipy.spatial 中的 ConvexHull 函数时,尽
我的 Android 应用程序的 jni 文件夹中有这个 C++ OpenCV 代码 hello-jni.cpp .我只想找到并绘制 convexhull 但原因是 hull[i] convexhul
Open-CV 2.4 Android-Java: 我已经像这样搜索轮廓(MatofPoint 列表): Imgproc.findContours(roi_mat, contours, hierarc
我正在尝试使用库 Scipy 和 ConvexHull 创建一个 Convex Hull。据我所知,它调用 QHull。 当我要添加的点没有“完整维度”时,就会出现问题。示例: from scipy.
scipy ConvexHull(参见 http://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.ConvexHull.htm
我正在尝试运行一些 Convex Hull 图像处理。基本上我想做的是关闭一个开放的轮廓。 我找到了 this answer over at the opencv forum这正是我想做的。一段时间前
我是 openCV 的新手,一直在尝试将 openCV 库中的 convexhull 函数用于应用程序(正在使用 objective-C),我需要知道函数参数的输入格式是什么,这很令人困惑.这个函数是
我目前正在使用 C++ GEOS API 迭代 typedef Points(x 和 y 成员变量)的 vector。 我通过创建一个 geos::geom::Geometry 对象,在 0 处缓冲以
我正在尝试编写一个程序,可以围绕某个对象创建一个多边形(任意数量的边)并找到多边形的质心。为此,我选择使用 convexhull 和 findContours 函数。在下面的程序中,您将获得两个窗口。
我正在尝试获取使用开放姿势检测到的点的像素坐标值。有人可以告诉我这是识别像素坐标的正确方法吗?还是有其他特定方法可以获取下图中表示为 2 和 5 的像素坐标? 代码: for pair in POSE
我是一名优秀的程序员,十分优秀!