我在图像上使用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