이번 포스팅에선 라즈베리파이 카메라에 대해 알아보도록 하겠습니다.
사진 출처: https://www.raspberrypi.org/products/camera-module-v2/
포스팅에서 쓰인 카메라는 카메라 모듈 v2입니다.
사진출처: https://www.element14.com/community/docs/DOC-80899/l/raspberry-pi-3-model-b-technical-specifications
라즈베리파이를 보면 카메라 모듈을 연결할 수 있는 단자가 있습니다.
CSI(Camera Serial Interface) 포트라고 하죠.
비슷하게 DSI(Display Serial Interface) 포트도 존재합니다. 이 포트는 라즈베리파이 디스플레이 연결할 때 쓰여요.
카메라 모듈을 사용하려면 라즈베리파이 CSI 포트에 카메라 모듈을 연결해야겠죠?
연결해 보겠습니다.
* 연결하기에 앞서 주의사항
- 카메라 모듈 선의 양쪽 끝이 생각보다 날카롭습니다.
잘못하면 베일 것 같은 느낌? 조심해서 연결하면 좋겠습니다.
- 카메라 모듈을 연결할 때에는 라즈베리파이의 전원 연결을 끊고 연결해 주세요.
이곳에 카메라 모듈을 연결해 주면 됩니다.
연결부위를 자세히 보면 흰색과 검은색으로 나누어져 있는데
표시한 검은색 부분을 살짝 들어올리면 올라갑니다.
왼쪽 오른쪽 각각 살짝 들어 올려주면 됩니다.
카메라 모듈의 끝을 보면 흰부분과 파란색 부분이 있는데
흰부분을 HDMI 단자 방향으로 하여 라즈베리파이에 연결해 줍니다.
넣으면 들어가는 느낌이 듭니다.
마지막에 딱 그 손맛이 있어요. 아 이걸 표현을 못하겠네.
아무튼 잘 끼워졌구나 하는 느낌이 듭니다.
연결 단자의 검은색 부분을 닫아서 카메라 모듈을 고정시켜 줍니다.
카메라 모듈을 살짝 당겨서 연결이 잘되어 있는지 확인해 주세요.
카메라 모듈 연결이 끝났으면, 라즈베리파이를 켜서 카메라 설정을 해줘야 합니다.
라즈베리파이 터미널에서
~ $ sudo raspi-config
명령을 입력합니다.
interfacing Options 항목을 선택합니다.
Camera 항목을 선택합니다.
<예>를 선택해 줍니다.
확인을 선택하면 raspi-config 초기 화면으로 돌아갑니다.
Finish를 선택해줍니다.
찍긴 찍었는데... 사진이 뒤집어져 있습니다.
하지만 걱정마세요! 다 방법이 있죠.
~$ raspistill -vf -o test2.jpg
명령으로 다시 찍어줍니다.
~$ sudo apt-get install -y gpac
명령어를 입력합니다.
-y 옵션은 설치 중 [yes/no] 질문에 대해 모두 yes로 답하게 하는 옵션입니다.
설치가 완료되면 .h264 파일을 .mp4 파일로 인코딩해 주어야겠죠?
~$ sudo nano camera.py
위의 명령어를 입력해 줍니다.
* 파일 이름을 지을 때 picamera.py로 지으면 에러가 날 수 있습니다.
아래에 이유가 나오지만 import할 모듈 이름이 picamera이기 때문!!
nano 편집기를 실행하여 위의 코드를 입력한 후
Ctrl + X, Y, Enter를 차례대로 입력해 줍니다.
소스코드
---------------------------------------------------------
from picamera import PiCamera
from time import sleep
camera = PiCamera()
camera.start_preview()
sleep(5)
camera.capture('/home/pi/capture.jpg')
camera.stop_preview()
위 코드에서 start_preview() 부분이 실행되면 모니터에 카메라 시점이 출력됩니다.
sleep(5) 코드에 의해 5초 쉬고, (모니터에 카메라 시점이 출력되는 중)
capture('/home/pi/capture.jpg') 코드에 의해 괄호 안의 디렉토리에 capture.jpg라는 파일로 사진이 저장됩니다.
stop_preview() 부분이 실행되면서 카메라가 시점이 종료됩니다.
* sleep()
카메라 모듈에 capture() 명령을 주기 전에 sleep() 명령을 입력한 이유는,
카메라가 촬영을 하기 위해 약간의 준비시간이 필요하기 때문입니다.
* import의 방법
import의 방법에는 크게 두가지 방식이 있는데
[import 모듈명] 방법과 [from 모듈명 import 메소드] 방법이 있습니다.
첫번째 방법은 모듈 전체를 불러오는 것이고,
두번째 방법은 모듈의 특정 부분만 불러오는 것입니다.
큰틀에서 보면 첫번째 방법이 두번째 방법 또한 포함하기 때문에 편해 보이지만, 사용방법이 살짝 다릅니다.
첫번째 방법으로 import를 하면 메소드를 사용할 때 모듈의 이름을 붙여주어야 하지만
두번째 방법으로 import를 하면 메소드의 이름만 사용하면 됩니다.
위의 코드를 예시로 들면
첫번째 방법일 때
camera = picamera.PiCamera()
두번째 방법일 때
어려운 듯 어렵지 않쥬?
* 메소드?
간단하게 아두이노의 함수라고 생각하면 됩니다.
완전 동일한 개념은 아닙니다만... 쉽고 빠른 이해를 위해...
코드를 다 입력하고 저장했다면 이제 실행시켜 봅시다.
~$ sudo python camera.py
파이썬 파일이 실행되면서 카메라 모듈에 의해 사진이 찍혔습니다.
확인해 보겠습니다.
사진이 거꾸로 찍혔네요.
코드를 조금 수정해 봅시다.
camera.rotation = 180
--------------------------------------------------------
camera.rotation = 180 코드는 카메라 시점을 회전시켜주는 코드입니다.
180은 180도 회전이라는 뜻입니다.
다시 출력결과를 확인해 보겠습니다.
이번에는 제대로 찍혔네요.
다음은 파이썬 코드를 이용해 동영상을 찍어보겠습니다.
nano 편집기를 실행해 줍니다.
위와 같이 소스코드를 작성해 줍니다.
sleep(2)
camera.start_recording('/home/pi/vid.h264')
sleep(10)
camera.stop_recording()
start_recording, stop_recording 부분을 이용해서 영상의 시작과 끝을 지정합니다.
그사이에 있는 sleep(10)은 영상이 찍히는 시간이 되겠네요.
위 코드로 찍히는 영상은 10초짜리 영상입니다.
영상이 잘 찍혔는지 확인을 해봐야겠죠?
~$ omxplayer vid.h264
명령어를 입력해 줍니다.
영상이 잘 찍혔다는 것을 확인할 수 있습니다.
96,090
11
0
sudo nano camera.py를 작성하고 sudo python camera.py를 입력하면 Traceback (most recent call last): File "camera.py", line 8, in sleep(5) NameError: name 'sleep' is not defined 라고 뜨면서 파이썬 언어가 작동하지 않습니다. 도와주십시오.
from picamera import PiCamera from time import time 이 부분 제대로 입력하셨는지 체크하시기 바랍니다.
먼저 좋은 글 감사합니다. 나도 위와 같은문제가 있었는데 from time import sleep 로 수정하니까 되네용!!
vc.ril.camera error 뜨네요 이거 카메라를통째로 바꿔야하나요??
정말 잘 봤습니다. 그런데 카메라 초점이 안잡혀서 흐릿한데 이건 어떻게 해결할 수 있나요? ㅎㅎ
이거묘둘님과 같은 생각이에욤 ㅎ흐릿해욤ㅎ도와쥬세용
RPI 탑재 Chromium 활용 원격 접속 제어 및 스트리밍 서비스 무료 - 앱 개발전 간단한 제어 명령만 정의되면 기능등 시험 가능 sposync.com
그 혹시 omxplayer에 문제가 있는 것 같은 데 omxplayer를 설치를 못 하는 부분은 어떻게 하나요?
~$ omxplayer vid.h264 에서 command not found가 뜨는데 sudo apt-get install omxplayer도 아닌 것 같고 무엇을 설치해야 하나요?......
유익한 글 감사합ㄴ디ㅏ^^
확인