1. 程式人生 > >opencv 9 -- 輪廓 特徵 三

opencv 9 -- 輪廓 特徵 三

1 最小外接圓

函式 cv2.minEnclosingCircle() 可以幫我們找到一個物件的外切圓。
它是所有能夠包括物件的圓中面積最小的一個

(x,y),radius = cv2.minEnclosingCircle(cnt)
center = (int(x),int(y))
radius = int(radius)
img = cv2.circle(img,center,radius,(0,255,0),2)

2 橢圓擬合

使用的函式為 cv2.ellipse(),返回值其實就是旋轉邊界矩形的內切圓(橢圓)

ellipse = cv2.fitEllipse(cnt)
im = cv2.ellipse(im,ellipse,(0
,255,0),2)

3 直線擬合

我們可以根據一組點擬合出一條直線,同樣我們也可以為影象中的白色點 擬合出一條直線

rows,cols = img.shape[:2]
[vx,vy,x,y] = cv2.fitLine(cnt, cv2.DIST_L2,0,0.01,0.01)
lefty = int((-x*vy/vx) + y)
righty = int(((cols-x)*vy/vx)+y)
img = cv2.line(img,(cols-1,righty),(0,lefty),(0,255,0),2)

這裡寫圖片描述