본문 바로가기
Development/라즈베리파이

라즈베리파이 카메라 모듈 사용법

by dohk325 2018. 12. 17.
반응형

                                                                                                                                                         

                                                                                                                                                                                                                   

                                                                                                                                                         

                                                                                                                                                                                                             

                                                                                                                                                                                                          

라즈베리파이 카메라 모듈을 키는 명령어는
$ raspistill
 
라즈베리파이 비디오 모듈을 키는 명령어는
$ raspivid
 
원격 제어를 통해 라즈베리파이를 디스플레이하면,
라즈베리파이 카메라 모듈을 켰을 때 들어오는 화면이 뜨지를 않는다.
 
동영상도 마찬가지다.5
 
Menu -> Programming -> Thonny Python IDE
camera.py로 저장
 
from picamera import PiCamera
from time import sleep
camera = PiCamera()
camera = PiCamera() 명령어를 통해서 camera 객체를 생성한다. camera 객체를 조작해서 설정을 조정할 수 있다.
여기까지는 기본적으로 카메라를 쓸 수 있게하는 부분
camera.start_preview()
sleep(10)
camera.stop_preview()
저장 후, F5를 눌러 실행
 
위의 코드는 카메라를 그냥 켜서 미리보기 기능만 되도록 하는 것.
 
모니터를HDMI로 연결하니,노트북에는 안뜨고 모니터에는 뜬다.독특한 현상이다.
아무래도 카메라 아웃풋이 HDMI로만 이루어지게 되어 있는 것 같다.
 
 
 
카메라 미리보기 기능은 라즈베리파이가 모니터에 직접 연결될 때만 동작된다.원격연결(SSH, VNC) 경우 카메라 미리보기 기능이 작동되지 않는다.
카메라 모듈에 대한 가장 일반적인 사용법은 정지화면 사진을 찍는 것이다.
•  sleep 시간을 줄이도록 코드를 수정하고 camera.picture() 행을 추가한다:
camera.start_preview()
sleep(5)
camera.capture('/home/pi/Desktop/image.jpg')
camera.stop_preview()
사진을 캡쳐하기 전에 적어도2초 정도 준비 시간을 두는 것이 중요한데,이유는 센서에게 조명을 준비할 시간을 제공하기 위해서다.
5장의 사진을 찍게 하는 코드
camera.start_preview()
for i in range(5):
   sleep(5)
   camera.capture('/home/pi/Desktop/image%s.jpg' % i)
camera.stop_preview()
동영상 촬영
정지화면 사진을 찍는데 카메라를 사용했으니,동영상 비디오 녹화로 옮겨보자.
1.           코드를 수정해서 capture()를 start_recording(), stop_recording() 함수로 교체한다.
camera.start_preview()
camera.start_recording('/home/pi/video.h264')
sleep(10)
camera.stop_recording()
camera.stop_preview()
•  상기 파이썬 코드를 실행시키면, 10초 동안 동영상을 녹화하고 나서 미리보기 기능이 닫힌다.
•  동영상을 재생시키려면,상단 작업막대에서 검은색 모니터 아이콘을 클릭해서 터미널 윈도우를 연다.
 
 
 
•  다음 명령어를 입력하고 엔터 키를 눌러 동영상을 재생시킨다.
omxplayer video.h264
 
 
 
•  촬영된 동영상이 재생된다. omxplayer 전송 프레임률이 빠르게 설정되어 있어서 촬영된 것보다 실제로 빠르게 재생된다.
라즈베리파이 카메라 모듈에서 허용되는 최소한의 해상도는64 by 64라고 함
이게 픽셀 정보인가??
MNIST를28 by 28이라고 하는 거하고 똑같은 의미인가?
해상도 조절하는 코드
camera.resolution = (2592, 1944) #(2592, 1944)가 최대 해상도. (64, 64)가 최소한의 해상도
camera.framerate = 15
camera.start_preview()
sleep(5)
camera.capture('/home/pi/Desktop/max.jpg')
camera.stop_preview()
The following example shows that certain properties can be adjusted “live” while a preview is running. In this case, the brightness is increased steadily during display:
 
 
 
The next example demonstrates setting the camera resolution (this can only be done when the camera is not recording) to 640x480, then starting a preview and a recording to a disk file:
 
 
 
 
 
 
이렇게 하면,하나의 파일당500kb내외의 크기를 가짐.
픽셀을 어느 정도의 크기로 할지는 박사님과 상의해야 확실히 알 것 같음.
캡쳐링 한RGB형태의 이미지를numpy array형태로 표현 가능
 
 
 
print(stream.array)를 통해 배열 내부의 구체적인 값 출력 가능
동영상 찍는 동안에 캡쳐 뜨는 코드
 
 
 
카메라를 위한 모든 가이드라인은 해당 사이트를 참고한다.

반응형