2016-05-23 10 views
-3

Ich brauche Hilfe bei der Suche nach Kreisen in einem Live-Video-Feed von meiner Webcam. Ich brauche nur Feedback von Python, dass ein Kreis erkannt wurde oder nicht. Auch, was ist die beste Methode, um die Größe des Kreises in Pixel für eine bessere Erkennung zu finden. Mein Code so weitFinden von Kreisen in einem Live-Video-Feed mit Python 2.7.11 und Opencv 3.0.0

import cv2 
import numpy as np 
import sys 

cap = cv2.VideoCapture(0) 

while(True): 

    ret, frame = cap.read() 


    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 
    gray = cv2.medianBlur(gray,5) 
    cimg = frame.copy() 
    circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1, 10, np.array([]), 200, 100, 100, 200) 
    if circles == 1: 
     print('Circle true') 
    else: 
     print('No circle') 
    cv2.imshow('video',gray) 

    if cv2.waitKey(1) & 0xFF == ord('q'): 
     break 


cap.release() 
cv2.destroyAllWindows() 
+1

Was fragen Sie? Was funktioniert nicht? Bitte geben Sie auch Beispielbilder an. –

+0

Ich möchte in einem Videostream einen Kreis beliebiger Größe (innerhalb eines bestimmten Rahmens) finden und dann die Bestätigung erhalten, dass ein Kreis erkannt wurde oder nicht. Wenn ich also ein scheibenartiges Objekt unter die Webcam verschiebe, bekomme ich eine Bestätigung, dass ein Kreis erkannt wurde. Ich glaube gerade mein Problem ist meine Kreise Funktion. – circles3

Antwort

0

Da ist es!

import cv2 
import numpy as np 
import sys 
cap = cv2.VideoCapture(0) 
while(True): 
    gray = cv2.medianBlur(cv2.cvtColor(cap.read()[1], cv2.COLOR_BGR2GRAY),5) 
    cirles=cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1, 10)# ret=[[Xpos,Ypos,Radius],...] 
    if cirles!=None:print "Circle There !" 
    cv2.imshow('video',gray) 
    if cv2.waitKey(1)==27:# esc Key 
     break 
cap.release() 
cv2.destroyAllWindows() 
+0

Vielen Dank für die Antwort! Ich bin neu auf dieser Seite und weiß nicht, wie ich meinen Code in die graue Box schreiben soll. Weißt du, warum meine Hoochkreise mit 7 Parametern arbeiten würden? Nehmen wir an, Sie hätten ein kreisförmiges Objekt, von dem ein Teil abgeschnitten wäre, um die Houghcircles anfälliger zu machen und nicht zu erkennen? Ich habe gerade mit Werten herumgespielt. Kreise = cv2.HoughCircles (grau, cv2.HOUGH_GRADIENT, 2, 60, 1, 200, 70, 70, 80) – circles3