【发布时间】:2022-01-17 20:46:11
【问题描述】:
我有一个函数可以利用 OpenCV 的轮廓检测在图像中的一些主要特征周围绘制一个多边形。我使用下面 sn-p 中的 approxPolyDP 函数简化了这些轮廓,以在区域周围返回一个封闭的梯形,它工作正常:
top_poly = cv.approxPolyDP(top_cnt, 0.05 * top_perimeter, closed=True)
top_poly = np.squeeze(top_poly) # get rid of the singleton dimension
但是,当根据下面链接的文档的预期输出是 N x 2D 点 (N x 2) 的数组时, approxPolyDP 返回一个奇怪类型的 ndarray,其形状为 N x 1 x 2。我不得不调试一段时间,直到我发现可以在 sn-p 的第二行使用 np.squeeze 雕刻出其中的单例维度。感谢这个答案:What does cv2.approxPolydp() return?
我的问题是,这个单一维度的目的是什么?我担心我可能会丢失一些有用的信息,而且我不喜欢以我不完全理解的方式使用 np.squeeze()。感谢您提供任何可以对此有所启发的意见。
https://docs.opencv.org/4.5.4/d3/dc0/group__imgproc__shape.html#ga0012a5fdaea70b8a9970165d98722b4c
【问题讨论】:
-
它只输出一个点列表:只要你有一个点列表(带有 x 和 y 坐标)就可以了
标签: python opencv computer-vision