Dies ist eine alte Version des Dokuments!
Seht euch den Test in main() an, um zu verstehen, wie man das Turtle-Modul benutzt. Die kleine Komplikation, die Bildkoordinaten jeweils in Turtle-Koordinaten umrechenen zu müssen, ließ sich leider nicht ohne größeren Aufwand vermeiden.
import turtle from scipy import misc import pickle import cv2 import numpy as np def smooth(kont): for i in range(1,len(kont)-1): kont[i]=1/3.*(kont[i-1]+kont[i]+kont[i+1]) class MyTurtle(turtle.Turtle): def turn_and_move(self,p): self.setheading(self.towards(p)) self.goto(p) class turtle_world(object): def __init__(self,bild): '''Richtet ein Turtle-Fenster mit dem Hintergrundsbild bild ein. Die Funktion erwartet ein opencv-Farbbild. Dabei ist zu beachten, dass opencv statt RGB die Bilder BGR speichert.''' misc.imsave("bild_fuer_turtle.gif",bild[:,:,[2,1,0]]) self.screen=turtle.Screen() self.xsize=bild.shape[1] self.ysize=bild.shape[0] turtle.screensize(self.xsize,self.ysize) turtle.bgpic("bild_fuer_turtle.gif") self.t=MyTurtle() self.t.pensize(2) self.t.pencolor("red") self.t.shape("turtle") def image_to_turtle(self,point): '''Rechnet die Koordinaten des Bild-Arrays auf die Turtle-Koordinaten um. Returns: Koordinatentupel.''' return (point[1]-(self.xsize//2),(self.ysize//2)-point[0]) def turtle_to_image(self,point): '''Rechnet die Turtle-Koordinaten auf Bild-Array-Koordinaten um. Returns: numpy-Vektor mit Bildkoordinaten''' return np.array([self.ysize//2-point[1], point[0]+self.xsize//2]) def main(): '''Kleiner Test''' l=misc.lena() bild_farbbild=cv2.cvtColor(np.uint8(l),cv2.cv.CV_GRAY2BGR) tw=turtle_world(bild_farbbild) punkte=[[50,50],[70,400],[200,100],[300,300]] tw.t.penup() for p in punkte: tw.t.turn_and_move(tw.image_to_turtle(p)) tw.t.pendown() return 0 if __name__ == '__main__': main()