Created
December 2, 2018 16:19
-
-
Save chriswoodle/68e95ad8d82a3d17c79d166c8600824f to your computer and use it in GitHub Desktop.
Runs pi cam and displays as video
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# From https://stackoverflow.com/questions/27805077/display-io-stream-from-raspberry-pi-camera-as-video-in-pygame | |
import picamera | |
import pygame | |
import io | |
# Init pygame | |
pygame.init() | |
screen = pygame.display.set_mode((320,240)) | |
# Init camera | |
camera = picamera.PiCamera() | |
camera.resolution = (640, 480) | |
camera.crop = (0.0, 0.0, 1.0, 1.0) | |
x = (screen.get_width() - camera.resolution[0]) / 2 | |
y = (screen.get_height() - camera.resolution[1]) / 2 | |
# Init buffer | |
rgb = bytearray(camera.resolution[0] * camera.resolution[1] * 3) | |
# Main loop | |
exitFlag = True | |
while(exitFlag): | |
for event in pygame.event.get(): | |
if(event.type is pygame.MOUSEBUTTONDOWN or | |
event.type is pygame.QUIT): | |
exitFlag = False | |
stream = io.BytesIO() | |
camera.capture(stream, use_video_port=True, format='rgb') | |
stream.seek(0) | |
stream.readinto(rgb) | |
stream.close() | |
img = pygame.image.frombuffer(rgb[0: | |
(camera.resolution[0] * camera.resolution[1] * 3)], | |
camera.resolution, 'RGB') | |
screen.fill(0) | |
if img: | |
screen.blit(img, (x,y)) | |
pygame.display.update() | |
camera.close() | |
pygame.display.quit() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment