2016-07-28 38 views
0

Ich habe OpenCV Tutorial here für Kreis Erkennung auf meinem Raspberry Pi gefolgt. Dies ist der Code, den ich verwende, der mit dem Tutorial identisch ist, außer einem anderen Bild.OpenCV Hough Circle Transform funktioniert nicht

import cv2 
import numpy as np 

img = cv2.imread('watch.jpg',0) 
img = cv2.medianBlur(img,5) 
cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR) 

circles = cv2.HoughCircles(img,cv2.HOUGH_GRADIENT,1,20, 
         param1=50,param2=30,minRadius=0,maxRadius=0) 
circles = np.uint16(np.around(circles)) 
for i in circles[0,:]: 
    cv2.circle(cimg,(i[0],i[1]),i[2],(0,255,0),2) 
    cv2.circle(cimg,(i[0],i[1]),2,(0,0,255),3) 

cv2.imshow('image',cimg) 
cv2.waitKey(0) 
cv2.destroyAllWindows() 

Dann, wenn ich das Skript lief das ist, was ich mit diesem enter image description here

vorgestellt wurde, und dies ist das Originalbild

enter image description here

Was dies geschehen verursacht?

Vielen Dank im Voraus!

Edit:

enter image description here

+0

Der Fehler beim Bearbeiten bedeutet, dass keine Kreise im Bild gefunden wurden. Diese Frage erklärt es besser http://stackoverflow.com/questions/38648387/opencv-hough-circle-transform-needs-8-bit-image/38660785#38660785 – Loanb222

Antwort

1

Die große Menge von Kreisen, die durch Hough Kreis Transformation wird durch den niedrigen Wert der Schwelle für Mitteldetektion verursacht, die param2 in cv2.HoughCircles in Ihrem Fall ist.

Versuchen Sie also, den Wert param2 zu erhöhen, um falsche Erkennungen zu vermeiden.

Sie können auch minRadius und maxRadius Werte für bessere Ergebnisse anpassen.

EDIT:

I Beispiel nur versucht haben, von here und nur param2-10, minRadius-30 und maxRadius-50 geändert. Das Ergebnis ist gut genug:

enter image description here

Das Beispiel aus dem obigen Link mit C++ geschrieben wird, aber Sie können Parameter und die Reihenfolge der Funktionen Anrufungen vergleichen, um Ihren eigenen Algorithmus zu verfeinern.

+0

Ist es möglich, Hough Circle Transform mit einem Live-Feed zu verwenden Video? – Loanb222

+0

@ Loanb222 ja, natürlich ist es möglich. Aber die Leistung ist eine große Sache. –

+0

Ich bekomme immer einen Fehler, wenn ich es mit der Pi-Kamera benutze. Ich habe meine Frage mit dem Bild des Fehlers aktualisiert – Loanb222