我希望能够找到一张图片的轮廓,然后绘制它的凸包。我的做法是:加载图片,对其进行阈值处理,找到其轮廓,然后绘制凸包。
gray = cv2.imread(test_paths[i], 0)
ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY_INV)
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cnt = contours[0]
检测到的轮廓数量为1。 问题出在我尝试绘制轮廓时,如果我这样做。
cv2.drawContours(cnt_dst, cnt, -1, (255, 0, 0), 3)
plt.imshow(cnt_dst)
如果我将代码更改为以下内容:
cv2.drawContours(cnt_dst, contours, 0, (255, 0, 0), 3)
plt.imshow(cnt_dst)
轮廓不同: 请注意,使用此方法可以得到相同(好的)结果:
cv2.drawContours(cnt_dst, contours, -1, (255, 0, 0), 3)
有什么想法,这是为什么发生的呢?
cv2.drawContours(cnt_dst, [cnt], -1, (255, 0, 0), 3)
已经完成。谢谢! - Manuel Lagunas