Dies ist eine alte Version des Dokuments!
Das folgende Programm liest ein Bild ein und findet alle Konturen darin. Die Funktion Isolux liefert eine Liste „res2“, die alle Konturen unter der Voraussetzung, dass sie sind länger als 15 Punkte sind, auflistet.
#Niveaulinien-Programm import numpy as np import matplotlib.pyplot as plt from scipy import misc, ndimage, signal import cv2 import scipy.misc as misc import skimage.color as color #bild=misc.imread('hund_mittel_kl.jpg') # bild einlesen cap = cv2.VideoCapture(0) #bei kamera res, bild2 = cap.read() #bei kamera imgray =color.rgb2gray(bild2) from skimage.measure import find_contours res = [] for value in np.linspace(np.min(imgray), np.max(imgray),10): res.extend(find_contours(imgray,value)) for cont in res: print cont.shape cap.release() def Isolux(): #a_als_farbbild = cv2.cvtColor(a, cv2.COLOR_GRAY2BGR) #a ist ein s/w-bild, um farbe überhaupt anzeigen zu können, wird es in ein bgr konvertiert res2 = [] for cont in res: if cont.shape[0]>15: #and ... Fkt.Check for i,j in cont: cv2.circle(bild2,(int(round(j)),int(round(i))),1,(1,0,0),-1) res2.append(cont) cv2.imshow("Bild:",bild) cv2.waitKey(0) cv2.destroyAllWindows() return res2 res2 = Isolux()
To Do: