弄乱凸性缺陷

时间:2016-07-22 05:03:42

标签: python opencv

目前我在opencv-python工作时出现凸性缺陷。 从手册中我得到了以下代码:

import cv2
import numpy as np
img = cv2.imread('star.jpg')
img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(img_gray, 127, 255,0)
contours,hierarchy = cv2.findContours(thresh,2,1)
cnt = contours[0]
hull = cv2.convexHull(cnt,returnPoints = False)
defects = cv2.convexityDefects(cnt,hull)
for i in range(defects.shape[0]):
    s,e,f,d = defects[i,0]
    start = tuple(cnt[s][0])
    end = tuple(cnt[e][0])
    far = tuple(cnt[f][0])
cv2.line(img,start,end,[0,255,0],2)
cv2.circle(img,far,5,[0,0,255],-1)
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

根据opencv-pyhthon手册cv2.convexityDefects()返回四个值,即[起点,终点,最远点,近似值 到最远点的距离]。

我不明白for循环的五行是如何工作的?

1 个答案:

答案 0 :(得分:0)

查看official docs。 s,e,f只是轮廓上点的索引。 d是距离最远轮廓点与船体之间的距离。