본문 바로가기

Hardware/SBC (rasp, jetson, latte panda)

Python을 이용하여 라즈베리파이 카메라 영상에 오버레이(Overlay) 테스트해보기

이제 겨우 라즈베리파이에 카메라를 연결하고 푸시버튼을 촬영버튼처럼 사용할 수 있게 되었네요^^[바로가기] 오늘은 그 카메라 영상에 텍스트 글자를 입히는 오버레이를 테스트한 것을 올릴까 합니다. 요런 재미있는 테스트 코드를 제가 다~ 만들었으면 참 멋지겠지만... 그렇지 않습니다. 오늘 테스트하는 코드는 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')

이번 코드는 날짜와 시간을 표현해주는 것입니다.

이 예제는 그림과 코드만 보면 딱 뭔 이야기인지 알 수 있죠^^... 오늘은 이렇게 카메라 영상을 가지고 놀았네요^^

반응형