如何通过 findContours 函数求出检测到的物体的长宽?
How to find the length and width of detected objects by findContours function?
我有一张包含不同类型薄片的图像。这是示例图片:
在这张图片中,全黑的部分是一片薄片,我想求出每片薄片的长度和宽度。
我使用 findContours
函数检测了所有这些薄片。我还使用 arcLength
函数来查找长度,但我不知道此函数的 return 值。
那么,有没有什么方法可以测量一个物体的完美长宽呢?
取决于您需要的准确度。
最简单的方法是在每个子检测层上使用opencv minrect函数(只需将每个检测countour[i]传输到一个层)
RotatedRect minAreaRect(InputArray points)
输出的矩形宽度和高度就是你要找的
另一个工具是call convexhull。要确定这一点,您必须找到主要方向(本征)并找到长度。如果你需要找到一个弯曲的长度,那么你必须单独追踪 non-convexhull 区域。会有点复杂
void convexHull(InputArray points, OutputArray hull, bool clockwise=false, bool returnPoints=true )
如前所述,最简单的方法是查看包含薄片的最小矩形,这是要调用的函数:
我有一张包含不同类型薄片的图像。这是示例图片:
在这张图片中,全黑的部分是一片薄片,我想求出每片薄片的长度和宽度。
我使用 findContours
函数检测了所有这些薄片。我还使用 arcLength
函数来查找长度,但我不知道此函数的 return 值。
那么,有没有什么方法可以测量一个物体的完美长宽呢?
取决于您需要的准确度。
最简单的方法是在每个子检测层上使用opencv minrect函数(只需将每个检测countour[i]传输到一个层)
RotatedRect minAreaRect(InputArray points)
输出的矩形宽度和高度就是你要找的
另一个工具是call convexhull。要确定这一点,您必须找到主要方向(本征)并找到长度。如果你需要找到一个弯曲的长度,那么你必须单独追踪 non-convexhull 区域。会有点复杂
void convexHull(InputArray points, OutputArray hull, bool clockwise=false, bool returnPoints=true )
如前所述,最简单的方法是查看包含薄片的最小矩形,这是要调用的函数: