본문으로 바로가기

라즈베리파이의 카메라를 심플하게 설치한 이야기[바로가기]와 그 카메라를 Python으로 정말 초~ 심플하게 구동해본 이야기[바로가기]를 했구요... 그 후에 푸시 버튼과 LED를 GPIO In/Out에 연결해서 Python으로 심플하게 테스트하는 이야기[바로가기]를 했습니다. 이번에는 그 버튼을 이용해서 버튼을 누르면 카메라의 영상을 캡쳐하는 기능을 구현할까 합니다. 사실 이 기능은 Raspberry Pi Python Camera 요 단어들만 가지고 구글링을 하면 수두룩~~~하게 뜨는 예제입니다. 쉽게 말하면 언제나 그렇듯 별거 아닌 예제라는 뜻이지요^^

일단 구성은 위 그림과 같이 했습니다. 그냥 버튼의 한쪽은 GND에.. 다른쪽은 GPIO.21번에 연결했습니다.

흠.. 저는 확장보드를 사용하고 있으니 구성은 저렇게 되겠네요^^

저 GPIO 확장보드랑 연결선(점프선)은 참 잘 산것 같아요 ㅎㅎㅎ....

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))
    button.wait_for_press()
    camera.capture('image.jpg')
    camera.stop_preview()

코드는 저렇게 심플합니다.^^. 먼저 지난번 GPIO 테스트와 달리 이번에는 gpiozero를 import했습니다. 지난번 코드에서 있던 각 종 설정없이 Button / LED 등으로 선언하면 되도록 편하게 되어 있습니다^^. 그리고, 또 지난번과 달리 이번에는 camera.rotation 으로 화면 각도를 조절해서 카메라를 뒤집지 않도록 했습니다.(^^) 그리고, button.wait_for_press()명령으로 푸시버튼이 눌러질때까지 기다렸다가 capture하도록 해 두었습니다. 지금이야 심플한 코드니까요.. 나중에는 인터럽트 방식을 써야하지 않을까합니다만^^... 아무튼 그렇게 해서 위 코드를 실행하면 라즈베리파이 화면에는..

흠... picamera의 preview화면은 라즈비안에서 화면 캡쳐를 해도 나타나지 않는다.. 그래서 이렇게 폰으로 찍어야한다.. 뭔가 방법이 없을까???

위 그림처럼 나타납니다. 저상태에서 버튼을 누르면...

얻은 사진입니다. 생각보다 괜찮죠?^^...


댓글을 달아 주세요

  1. BlogIcon 비키니짐(VKNY GYM) 2016.03.04 16:36 신고

    잘 보고갑니다. 즐거운 금요일 하루 되세요^^

  2. BlogIcon ☆Unlimited☆ 2016.03.04 18:05 신고

    잘 보고 갑니다. 좋은저녁 되세요 ^^

  3. BlogIcon Shinny 2016.03.04 18:19 신고

    좋은정보 잘 보고 갑니다~

  4. BlogIcon 감성주부 2016.03.05 04:21 신고

    사진 배우고 싶은데 포스팅만 봐도 어렵게 느껴지네요. 그래도 잘 보고 갑니다.^^즐거운 주말 되세요

  5. BlogIcon 핑구야 날자 2016.03.05 08:01 신고

    예제를 통해서 도움을 받아도 되겠군요

  6. BlogIcon 딸기향기 2016.03.06 17:37 신고

    올때마다 정말 많이 배우고 가요! 특히 파이썬 코드 하나하나 다 읽어보고 갑니당

  7. BlogIcon 초록배 2016.03.07 20:19 신고

    우와~ 사진 제법 괜찮게 나오는군요.^^

  8. 2016.03.14 13:52

    비밀댓글입니다

  9. 이남경 2016.06.01 19:40 신고

    사진을 버튼으로찍을때 따로 스크립트를 해야되나요? 명령어안치고 바로 이미지 저장이되지는않아요?

  10. 13학번 2018.01.30 17:32 신고

    왜 제가 찍으면 사진화질이 너무 안좋은걸까요...?? ㅠㅠ
    카메라 모듈좀 알려주세요