Skip to content

Instantly share code, notes, and snippets.

@algrant
Created January 30, 2012 11:56
Show Gist options
  • Save algrant/1704040 to your computer and use it in GitHub Desktop.
Save algrant/1704040 to your computer and use it in GitHub Desktop.
Screen Capture and Display Code
#!/usr/bin/env python
import sys, pygame
import ImageGrab
import ImageFilter
import ImageChops
import ImageMath
from numpy import array
pygame.init()
WIDTH = 300
HEIGHT = 231
CX = 270
CY = 101
size = width, height = 300, 231
speed = [2,2]
black = 0,0,0
screen = pygame.display.set_mode((size[0],size[1]*2))
ball_number = 2
balls = [0 for i in range(ball_number)]
ball_poss = [[0 for x in range(width)] for y in range(height)]
while 1:
for event in pygame.event.get():
if event.type == pygame.QUIT: sys.exit()
sg = ImageGrab.grab((CX,CY, CX+WIDTH, CY+HEIGHT))
nsg = array(sg.tostring())
R,G,B = sg.split()
#find red balls
R1 = R.point(lambda i: 255 if i>250 else 0)
G1 = G.point(lambda i: 255 if i<25 else 0)
B1 = B.point(lambda i: 255 if i<25 else 0)
sg = ImageChops.multiply(R1, G1)
sg = ImageChops.multiply(sg, B1)
sg = sg.convert("RGB")
#sg = ImageMath.eval("((a>250)&(b<25)&(c<25))*250,'L'",a=R,b=G,c=B)
img = pygame.image.frombuffer(sg.tostring(), sg.size, sg.mode)
R2 = R.point(lambda i:255 if i==255 else 0)
G2 = G.point(lambda i: 255 if i==255 else 0)
B2 = B.point(lambda i: 255 if i==255 else 0)
sg = ImageChops.multiply(R1, G2)
sg = ImageChops.multiply(sg, B2)
sg = sg.convert("RGB")
sg = sg.filter(ImageFilter.MinFilter(5))
img2 = pygame.image.frombuffer(sg.tostring(), sg.size, sg.mode)
#ballrect = ballrect.move(speed)
#if ballrect.left <0 or ballrect.right > width:
# speed[0] = - speed[0]
#if ballrect.top < 0 or ballrect.bottom > height:
# speed[1] = -speed[1]
screen.fill(black)
screen.blit(img,(0,0))
screen.blit(img2,(0,height))
pygame.display.flip()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment