霍夫圓檢測

Python2.7+OpenCV:圖像讀取、圖像處理、圖像識別

import cv2import numpy as np#圖像讀取pie = cv2.imread(pie.jpg)#讀取所要處理的圖像(注意絕對路徑與相對路徑)cv2.namedWindow("beforeHoughCirlces",0)cv2.imshow(beforeHoughCirlces,pie)#展示讀取後的圖像(處理前圖像)#圖像預處理gray_img = cv2.cvtColor(pie, cv2.COLOR_BGR2GRAY)#灰度化處理img = cv2.medianBlur(gray_img, 5)#參數必須為奇數,中值濾波處理#檢測圓(410為圓之間最短距離,半徑在15和25之間)circles = cv2.HoughCircles(img,cv2.cv.CV_HOUGH_GRADIENT,1,300, param1=100,param2=30,minRadius=300,maxRadius=400)circles = np.uint16(np.around(circles))#整數化print "各圓坐標及半徑",circles#檢測到的圓的信息#畫圓for i in circles[0,:]: # draw the outer circle cv2.circle(pie,(i[0],i[1]),i[2],(0,255,0),2)#(0,255,0)綠色,i[0]為x坐標,i[1]為坐標,i[2]為半徑 # draw the center of the circle cv2.circle(pie,(i[0],i[1]),2,(0,0,255),3)#(0,0,255)紅色,RGB三原色#顯示畫好的圓cv2.namedWindow("afterHoughCirlces",0)#圖片像素過高時,可調節圖片大小cv2.imshow("afterHoughCirlces",pie)cv2.waitKey()cv2.destroyAllWindows()

圓識別前:

圓識別後:

控制台中顯示:各圓坐標及半徑 [[[534 494 378]]]

可以根據需要設置HoughCircle函數中的參數。

歡迎交流


推薦閱讀:

1.22【OpenCV圖像處理】像素重映射
使用OpenCV進行圖像分析
1.28【OpenCV圖像處理】凸包計算
如何學習C++圖像處理?
請教各位朋友cv2的python版本中imwrite無法生成帶有中文路徑的圖片?

TAG:OpenCV | Python入門 |