0

我需要有关convexitydefect()Java 语言函数的信息。

这是功能:

 Imgproc.convexityDefects(MatOfPoint contour, MatOfInt convexhull, MatOfInt4 convexityDefects)

结果在convexityDefects变量中:

MatOfInt4 convexityDefects;

现在在 c++ 中,convexityDefects 的结构是:

CvPoint* start; // point of the contour where the defect begins

CvPoint* end; // point of the contour where the defect ends

CvPoint* depth_point; // the farthest from the convex hull point within the defect

float depth; 

但是Java retunrs 4 int for row!如何在 java 中获取有关 start、end、depth_point、depth 的信息?

4

1 回答 1

0

convexityDefects您提到的结构仅适用于 C API。对于 C++ 和 Java,很难回答比文档已有的更好的答案:

在 C++ 和新的 Python/Java 接口中,每个凸性缺陷都表示为 4 元素整数向量 (aka cv::Vec4i): ( start_index, end_index, farthest_pt_index, fixpt_depth),其中索引是凸性缺陷开始、结束和结束的原始轮廓中基于 0 的索引最远点,fixpt_depth是最远轮廓点和船体之间距离的定点逼近(8 个小数位)。也就是说,要获得深度的浮点值将是fixpt_depth/256.0

因此,startend是 4 的前两个元素int,并且包含 的索引contourdepth_point是第三个元素,是 中最深点的索引contour。将最后一个元素除以 256 以获得深度的浮点值。

于 2013-08-26T23:48:50.133 回答