====== kanten_erkennen_neu.py ====== ## Systemmodule importieren import cv2 import numpy as np import scipy.signal as sig import scipy from scipy import misc from scipy import ndimage import pickle ## Eigene Module importieren from kontouren import * from bildoperationen import * from bewegeturtle import * ## Kamera öffnen capture= cv2.VideoCapture(0) res, bild=capture.read() if res: print bild.shape bild_original=bild.copy() bild_grau=cv2.cvtColor(bild,cv2.cv.CV_BGR2GRAY) bild_kopie=bild_grau.copy()/255. zeilen, spalten=bild_grau.shape print "Das Bild hat %s Zeilen und %s Spalten"% (zeilen,spalten) ## Allerlei Bilder berechnen bild_neu3 =glaetten(bild_kopie,9) bild_neu=glaetten(bild_kopie,5) bild_neu1=laplace(bild_neu) bild_neu4=glaetten(bild_neu3,5) bild_neu2 =laplace(bild_kopie) bild_zweimalentrauscht=glaetten(bild_neu1,5) bild_zweimalgefiltert=laplace(bild_zweimalentrauscht) ## Die folgende Passage ist von S.B., ausprobiert. bild_geglaettet=glaetten(bild_kopie,3) bild_grad=gradient(bild_geglaettet) bild_sw=schwarzweiss(bild_grad,40./255.) bild_grad_eroded=ndimage.morphology.binary_erosion(bild_sw,\ structure=np.array([[0,1,0],[1,1,1],[0,1,0]])) # Neu: Aufruf der Kantenparametrisierung, einzeichnen der gefundenen Kontouren in # das Bild bild kontouren=parametrisiere_kanten(bild_grad_eroded,40./255.,mindestlaenge=40,anzahl_versuche=30000) for kontour in kontouren: cv2.polylines(bild,np.int32([np.array(kontour)[:,::-1]]),False,(0,0,255)) #bildkopie2=schwarzweiss(bild_zweimalentrauscht *255, 100) #bildkopie3=schwarzweiss(bild_neu4 *255, 95.) ## Allerlei Bilder anzeigen: cv2.imshow("Bild mit Kontouren", bild) cv2.imshow("Graubild",bild_grau) cv2.imshow("stark entrauscht",bild_neu3) cv2.imshow("entrauscht",bild_neu) cv2.imshow("1.Faltung_mit_starkem_Entrauschen",bild_neu1) cv2.imshow("1.Faltung_mit_Entrauschen",bild_neu4) cv2.imshow("1.Faltung_ohne_Entrauschen",bild_neu2) cv2.imshow("einmalentrauscht einmal gefaltet einmal entrauscht",bild_zweimalentrauscht) cv2.imshow("zweimalgefiltert", bild_zweimalgefiltert) #cv2.imshow("schwarzweiss1",bildkopie2) #cv2.imshow("schwarzweis_stark",bildkopie3) #cv2.imshow("schwarzweiss2/entrauscht",Experi) cv2.waitKey(0) ##### Neu: Aufruf der Funktion, die die Turtle auf dem Bild laufen lässt längs ##### gefundenen Kanten bewege_turtle_auf_bild(bild_original,kontouren) #while True: # c=cv2.waitKey(33) # if c=='q': # break else: print "Konnte Kamera nicht öffnen!"