我是一個OpenCV的初學者,目前在做的專案要求從圖片中找出圓弧。我看見大家推薦用霍夫圓在圖片中尋找圓弧,依樣畫葫寫了一段代碼,卻發現只能找到一部分圓弧,另外一些部分怎么也識別不了。哪位大俠可以幫忙看看,是我用錯了還是霍夫圓不適用于這種情況?不勝感激

代碼:
# coding:utf-8
import cv2
import numpy as np
# 讀源圖
img = cv2.imread(r"D:\\1.jpg")
cv2.imshow('image', img)
# 預處理
gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
blur = cv2.GaussianBlur(gray, (17, 17), 0)
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (10, 10))
open_ = cv2.morphologyEx(blur, cv2.MORPH_OPEN, kernel)
edge = cv2.Canny(open_, 50, 100, apertureSize=3)
# 霍夫圓
circles = cv2.HoughCircles(edge, cv2.HOUGH_GRADIENT, 1, 30, param1=100, param2=30, minRadius=0, maxRadius=0)
circles = np.uint16(np.around(circles)) #把circles包含的圓心和半徑的值變成整數
for i in circles[0, : ]:
cv2.circle(img, (i[0], i[1]), i[2], (0, 0, 255), 2) #畫圓
cv2.circle(img, (i[0], i[1]), 2, (0, 0, 255), 2) #畫圓心
cv2.imshow("circles", img)
# 退出
cv2.waitKey(0)
cv2.destroyAllWindows()
源圖:

檢測結果:只識別出三個,另外幾個都沒能識別出來。

uj5u.com熱心網友回復:
自己頂一個看看
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/265143.html
標籤:OpenCV
