HoughCircles cercle de détection à l'aide d'opencv et python-
Je suis en train d'utiliser OpenCV (Hough)Cercle de détection.. détecter les cercles. J'ai créé un solide cercle sur un fond noir, a essayé de jouer avec les paramètres, utilisé flou et tout et tout, mais je ne suis pas en mesure de le faire trouver quoi que ce soit.
Toutes les idées, suggestions, etc. ce serait génial, merci!!!!
mon code actuel est quelque chose comme ceci:
import cv2
import numpy as np
"""
params = dict(dp=1,
minDist=1,
circles=None,
param1=300,
param2=290,
minRadius=1,
maxRadius=100)
"""
img = np.ones((200,250,3), dtype=np.uint8)
for i in range(50, 80, 1):
for j in range(40, 70, 1):
img[i][j]*=200
cv2.circle(img, (120,120), 20, (100,200,80), -1)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
canny = cv2.Canny(gray, 200, 300)
cv2.imshow('shjkgdh', canny)
gray = cv2.medianBlur(gray, 5)
circles = cv2.HoughCircles(gray, cv2.cv.CV_HOUGH_GRADIENT, 1, 20,
param1=100,
param2=30,
minRadius=0,
maxRadius=0)
print circles
circles = np.uint16(np.around(circles))
for i in circles[0,:]:
cv2.circle(img,(i[0],i[1]),i[2],(0,255,0),2)
cv2.circle(img,(i[0],i[1]),2,(0,0,255),3)
cv2.imshow('circles', img)
k = cv2.waitKey(0)
if k == 27:
cv2.destroyAllWindows()
Ok, pour une raison quelconque, il tout d'un coup fonctionne avec très peu de paramètres. Je suis passé par tout depuis hier, sans que rien ne fonctionne, mais maintenant, il n'. Il ne fait pas beaucoup de sens pour moi, mais bon...
Hough cercles est un peu.. difficile, dans la pratique.
Hough cercles est un peu.. difficile, dans la pratique.
OriginalL'auteur Shin | 2014-10-08
Vous devez vous connecter pour publier un commentaire.
Votre code fonctionne parfaitement bien. Le problème est dans votre
HoughCircles
paramètres de seuil.Essayons de comprendre les paramètres que vous utilisez à partir de OpenCV Docs:
Donc, comme vous pouvez le voir, de l'intérieur, la HoughCircles appels de fonction, le Savant détecteur de bord, cela signifie que vous pouvez utiliser une image en nuances de gris dans la fonction, au lieu de leurs contours.
Maintenant réduire le
param1
à 30 etparam2
à 15 et de voir les résultats dans le code qui suit:+1 Mais je me demande ce que l'image d'entrée ressemble.
Comment est-ce de travailler avec maxRadius=0? Sûrement que ce serait restreindre les cercles d'apparaître?
si vous lisez la Documentation pour la HoughCircle vous pouvez voir que
maxRadius
etminRadius
les valeurs par défaut sont 0. Donc, vous n'êtes pas en appliquant le seuil de la taille du rayon. Par conséquent, l'obtention de tous les cercles dans l'image.OriginalL'auteur Eliezer Bernart
Si vous n'obtenez pas HoughCircles pour vous apporter des pixels des solutions parfaites pour des raisons évidentes de cercles alors vous n'êtes pas à l'utiliser tout
De votre faute, que vous essayez de main-d'accorder votre hyperparameters par vous-même. Qui ne va pas au travail. L'ordinateur de l'auto-régler les paramètres pour vous:
Le code ci-dessus convertit ce:
:
Pour plus d'informations sur ce que c'est fait, voir: https://stackoverflow.com/a/46500223/445131
OriginalL'auteur Eric Leschinski