Hardware/SBC (rasp, jetson, latte panda)
Python을 이용하여 라즈베리파이 카메라 영상에 오버레이(Overlay) 테스트해보기
PinkWink
2016. 3. 16. 08:30
이제 겨우 라즈베리파이에 카메라를 연결하고 푸시버튼을 촬영버튼처럼 사용할 수 있게 되었네요^^[바로가기] 오늘은 그 카메라 영상에 텍스트 글자를 입히는 오버레이를 테스트한 것을 올릴까 합니다. 요런 재미있는 테스트 코드를 제가 다~ 만들었으면 참 멋지겠지만... 그렇지 않습니다. 오늘 테스트하는 코드는 PiCamera에서 배포하는 예제입니다.^^[바로가기] 뭐 아무튼 따라하기 수준이긴 하지만 그래도 처음으로 카메라 영상에 뭔가 글자를 입혀보도록하죠^^
from picamera import PiCamera from time import sleep from gpiozero import Button button = Button(21) with PiCamera() as camera: camera.rotation = 180 camera.start_preview(fullscreen=False, window=(100,20,640,480)) camera.annotate_text = "Hello! World!" button.wait_for_press() camera.capture('image01.jpg') camera.stop_preview()
위 코드에서 특이할 것은 camera.annotate_text
입니다. 이 명령으로 오버레이가 되거든요^^
앗... 저렇게 흠.. 뭐 좀 작지만 Hello World가 찍혔네요~^^ 저장한 사진을 한 번 볼까요...
눼눼~~~^^
import picamera import time import itertools s = "This message would be far too long to display normally..." with picamera.PiCamera() as camera: camera.resolution = (640, 480) camera.rotation = 180 camera.framerate = 24 camera.start_preview(fullscreen=False, window=(100,20,640,480)) camera.annotate_text = ' ' * 31 for c in itertools.cycle(s): camera.annotate_text = camera.annotate_text[1:31] + c time.sleep(0.1)
이번 코드는 글자를 흐르게 하는 것입니다. 위 코드에서 0.1초 간격으로 글자를 옆으로 흐르게 합니다. 여기서 이 부분을 손쉽게 한것은 itertools.cycle
입니다. [바로가기]에 보면 나오지만 이 명령은 A,B,C라는 글자를 A,B,C,A,B,C,A,B,C... 이렇게 만들어 줍니다. 그래서 화면에 보면 한 문장이 계속 연달아 흐르는듯 보일 수 있습니다.
흠... preview는 스크린 캡쳐가 되지 않아서ㅠㅠ... 폰으로 찍었네요.ㅠㅠ.
import picamera import datetime as dt with picamera.PiCamera() as camera: camera.resolution = (640, 480) camera.rotation = 180 camera.framerate = 24 camera.start_preview() camera.annotate_background = picamera.Color('black') camera.annotate_text = dt.datetime.now().strftime('%Y-%m-%d %H:%M:%S') start = dt.datetime.now() while (dt.datetime.now() - start).seconds < 30: camera.annotate_text = dt.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
이번 코드는 날짜와 시간을 표현해주는 것입니다.
이 예제는 그림과 코드만 보면 딱 뭔 이야기인지 알 수 있죠^^... 오늘은 이렇게 카메라 영상을 가지고 놀았네요^^
반응형