一.轮廓的查找与绘制
查找轮廓
import cv2
import numpy as np
img = cv2.imread('shape.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
ret,binary = cv2.threshold(gray,220,255,cv2.THRESH_BINARY)
contours,hierarchy = cv2.findContours(binary,cv2.RETE_TREE,\cv2.CHAIN_APPROX_NONE)
n = len(contours)
print(n)
print(len(contours[0]))
print(len(contours[1]))
print(len(contours[2]))
print(len(contours[3]))
绘制轮廓
cv2.imshow("img",img)
img2 = cv2.drawContours(img,contours,1,(0,165,255),-1)
cv2.imshow("contours",img)
cv2.waitKey()
cv2.destroyAllWindows()
二.使用矩特征计算轮廓的面积及长度
计算图像的矩特征
import cv2
import numpy as np
img = cv2.imread('shape.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
ret,binary = cv.thrashold(gray.220,255,cv2.THRESH_BINARY)
contours,hierarchy = cv2.findContours(binary,cv2.RETE_TREE,\cv2.CHAIN_APPROX_NONE)
n = len(contours)
contoursImg = []
for i in range(n):
temp = np.zeros(img.shape,np.uint8)
contoursImg.append(temp)
contoursImg[i]=cv2.drawContours(contoursImg[i],contours,i,(255,255,255))
cv2.imshow("contours[" + str(i)+"]",contoursImg[i])
print("计算图像的矩特征:")
for i in range(n):
moment = cv2.moments(contours[i])
print(f"轮廓{i}的矩&#x