Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

ws1314:turtlemod.py

turtlemod.py

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()
ws1314/turtlemod.py.txt · Zuletzt geändert: 2016/05/10 14:46 (Externe Bearbeitung)