我在图像上使用OpenCV方法(C++)找到了轮廓和船体。我想指出缺陷点。我通过致电发现缺陷点

vector<Vec4i> defects;
convexityDefects(contours, hull, defects);

每个缺陷有4个整数。 x坐标是哪一个?我想获取缺陷点的坐标。我将画出黑线的起始点。

最佳答案

您将需要类似:Point p = contours[defects[d][2]]
我只引用文档中有意义的部分:



因此,返回的值表示原始轮廓中的索引。
defects[d]表示第d个轮廓。然后,将其第3个成员farthest_pt_index放在defects[d][2]上。该整数是原始轮廓中离船体最远的点的索引,即图形上的下部箭头。其坐标:

Point p = contours[defects[d][2]]
int x = p.x
int y = p.y

而且,如果您想知道这一点离船体有多远,则必须将第4个元素除以256:float p_distance = defects[d][3] / 256.0

07-24 09:44