怎么使用opencv里面的轮廓函数(python)?
1、把图片转为灰度图:
g = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

2、把灰度图二值化:
ret,g= cv2.threshold(g,200,255,0)

3、查看轮廓:
a,b,c = cv2.findContours(g,cv2.RETR_TREE,
cv2.CHAIN_APPROX_SIMPLE)
a是轮廓图;
b是轮廓边界的坐标(把曲线视为一组折线段)。

4、c不知道是什么。

5、绘制轮廓:
i = cv2.drawContours(im,b, -1, (255,0,0),1)

6、图片的矩:
cnt = b[0]
M = cv2.moments(cnt)
print(M)
M是一个字典。

7、用图片的矩,可以计算出轮廓的重心:
cx = int(M['m10']/M['m00'])
cy = int(M['m01']/M['m00'])

8、计算轮廓的面积:
area = cv2.contourArea(cnt)
也可以在轮廓的矩里面找:
area = M['m00']


9、计算轮廓周长:
l = cv2.arcLength(cnt,True)

10、绘制轮廓的凸包:
import cv2
im = cv2.imread('a.jpg')
g = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
ret,g= cv2.threshold(g,200,255,0)
a,b,c = cv2.findContours(255-g,cv2.RETR_TREE,
cv2.CHAIN_APPROX_NONE)
hull = cv2.convexHull(cnt)
t = cv2.cvtColor(a, cv2.COLOR_GRAY2BGR)
i = cv2.polylines(im, [hull], True, (255, 0, 0), 2)
