Example #1
0
	def __init__(self,driver,*args) :
		# need to call parent class' init method explicitly in python
		AetherModule.__init__(self,driver,*args)
		self.blink_phase = 0
		#self.pointer_sprite = LaserPointerSprite()

		#self.button = ButtonSprite()

		self.curr_line = []
		self.lines = [self.curr_line]

		self.lazer = LazerPointerProvider(0,(480,360))

		self.is_calibrated = False
Example #2
0
class Whiteboard(AetherModule) :

	def __init__(self,driver,*args) :
		# need to call parent class' init method explicitly in python
		AetherModule.__init__(self,driver,*args)
		self.blink_phase = 0
		#self.pointer_sprite = LaserPointerSprite()

		#self.button = ButtonSprite()

		self.curr_line = []
		self.lines = [self.curr_line]

		self.lazer = LazerPointerProvider(0,(480,360))

		self.is_calibrated = False

	def draw(self,screen) :

		if not self.is_calibrated :
			screen.fill(THECOLORS["white"])
			checkerboard = pygame.image.load('checkerboard.png')
			checkerboard = pygame.transform.scale(checkerboard,self.dims)
			screen.blit(checkerboard,(0,0))
			pygame.display.flip()
			corners = self.lazer._calibrate_camera()
			self.is_calibrated = True
		else :
			#frame = self.lazer.get_curr_frame()
			#screen.blit(frame,(0,0))
			pass

			"""
			pt = self.input.get_com()
			if pt is None : pt = (0,0)
			if self.blink_phase == 0 :
				self.pointer_sprite.update(pt)
			else :
				self.blink_phase -= 1
				self.pointer_sprite.update(None)

			if self.pointer_sprite.on :
				self.curr_line.append(pt)
			else :
				self.curr_line = []
				self.lines.append(self.curr_line)

			if self.pointer_sprite.clicked :
				self.button.click()

			for l in self.lines :
				if len(l) > 1 :
					pygame.draw.aalines(screen,THECOLORS["black"],False,l,1)
			"""

			# don't try this at home, kids
			frame = self.lazer._get_cv_frame()
			thresh = 248
			red = self.lazer._get_color_frame('r',frame)
			cvpt_min = cv.cvPoint(0,0)
			cvpt_max = cv.cvPoint(0,0)
			t = cv.cvMinMaxLoc(red,cvpt_min,cvpt_max)
			#print t,cvpt_min,cvpt_max

			#red = self.lazer._get_scaled_frame(red)
			#red = self.lazer._get_threshold_frame(frame=red,thresh=thresh,type=CV_THRESH_BINARY)

			blue = self.lazer._get_color_frame('b',frame)
			#blue = self.lazer._get_threshold_frame(frame=blue,thresh=thresh,type=CV_THRESH_BINARY)
			blue = self.lazer._cv_to_pygame(blue,channel=2)
			blue = pygame.transform.scale(blue,(self.dims[0]/2,self.dims[1]/2))

			green = self.lazer._get_color_frame('g',frame)
			#green = self.lazer._get_threshold_frame(frame=green,thresh=thresh,type=CV_THRESH_BINARY)
			green = self.lazer._cv_to_pygame(green,channel=1)
			green = pygame.transform.scale(green,(self.dims[0]/2,self.dims[1]/2))

			value = self.lazer._get_hsv_frame(frame)
			value = self.lazer._get_frame_channel(value,2)
			value = self.lazer._get_shifted_frame(-215,value)
			#value = self.lazer._get_threshold_frame(frame=value,thresh=thresh,type=CV_THRESH_BINARY)

			comb = self.lazer._multiply_frames(red,value)
			comb = self.lazer._cv_to_pygame(comb,channel=5)
			comb = pygame.transform.scale(comb,(self.dims[0]/2,self.dims[1]/2))

			red = self.lazer._cv_to_pygame(red,channel=0)
			red = pygame.transform.scale(red,(self.dims[0]/2,self.dims[1]/2))

			value = self.lazer._cv_to_pygame(value,channel=-1)
			value = pygame.transform.scale(value,(self.dims[0]/2,self.dims[1]/2))

			#frame = self.lazer.get_curr_frame()
			frame = self.lazer._cv_to_pygame(frame)
			frame = pygame.transform.scale(frame,(self.dims[0]/2,self.dims[1]/2))

			screen.blit(red,(0,0))
			screen.blit(blue,(self.dims[0]/2,0))
			screen.blit(green,(0,self.dims[1]/2))
			screen.blit(frame,(self.dims[0]/2,self.dims[1]/2))

			screen.fill((100,100,100,255))

			if t[1] >= 0 :
				pygame.draw.circle(screen,THECOLORS["red"],(cvpt_max.x,cvpt_max.y),5,1)
				pygame.draw.circle(screen,THECOLORS["white"],(cvpt_max.x,cvpt_max.y),3,0)

			#screen.blit(frame,(0,0))
			#screen.blit(self.button.image,(30,30))
			#screen.blit(self.pointer_sprite.image,pt)
			#print screen.get_at(pt)

	def process_event(self, event) :
		if event.type == KEYDOWN and event.key == K_b :
			self.blink_phase = 3
			return True
		return False