Opencv--20行程式碼實現橢圓檢測
阿新 • • 發佈:2019-02-09
本文環境:opencv+python3.4
之前在實驗室看到了8000行的橢圓檢測,
然後就手癢了。。。
當然,人家的研究成果很牛叉,
我的只算是沒事瞎Happy
各位客官就看著玩吧。
程式碼中有兩處引數可以更改。
準確率一般。
import cv2 import numpy as np from matplotlib import pyplot as plt import math img=cv2.imread("test.jpg",3) #img=cv2.blur(img,(1,1)) imgray=cv2.Canny(img,600,100,3)#Canny邊緣檢測,引數可更改 #cv2.imshow("0",imgray) ret,thresh = cv2.threshold(imgray,127,255,cv2.THRESH_BINARY) image, contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)#contours為輪廓集,可以計算輪廓的長度、面積等 for cnt in contours: if len(cnt)>50: S1=cv2.contourArea(cnt) ell=cv2.fitEllipse(cnt) S2 =math.pi*ell[1][0]*ell[1][1] if (S1/S2)>0.2 :#面積比例,可以更改,根據資料集。。。 img = cv2.ellipse(img, ell, (0, 255, 0), 2) print(str(S1) + " " + str(S2)+" "+str(ell[0][0])+" "+str(ell[0][1])) cv2.imshow("0",img) cv2.waitKey(0)