파이썬 코드를 이용한 파이카메라 제어
파이썬 코드를 이용해 파이 카메라를 제어하는 방법을 배웁니다.
프리뷰 보기
파이썬을 이용해 카메라의 프리뷰를 본다.
nano를 열고 다음 코드를 입력한 뒤 camera.py로 저장한다.
from picamera import PiCamera from time import sleep camera = PiCamera() camera.start_preview() sleep(10) camera.stop_preview()
- 다음을 입력해 camera.py를 실행한다. 실행하면 10초간 프리뷰가 뜨는 것을 볼 수 있다.
python camera.py
PiCamera의 rotation 메서드를 이용해 카메라의 각도를 조정할 수 있다. 다음은 화면을 180도 돌리는 것이다.
from picamera import PiCamera from time import sleep camera = PiCamera() camera.rotation = 180 camera.start_preview() sleep(10) camera.stop_preview()
다음과 start_preview의 alpha 매개변수를 이용해 투명도를 조정할 수 있다. 투명도는 0~255 안에서 설정할 수 있다.
from picamera import PiCamera from time import sleep camera = PiCamera() camera.start_preview(alpha=200) sleep(10) camera.stop_preview()
사진
파이썬을 이용해 사진을 찍어본다.
PiCamera의 capture 메서드를 이용해 사진을 찍을 수 있다. capture 매개변수에 저장할 파일명을 입력한다. 다음을 실행하면 5초 있다가 사진을 찍어 저장한다.
파이 카메라 조도가 설정되는 시간을 기다려주기 위해 사진을 찍기 전 최소 2초 정도 여유를 두는 것이 좋다.from picamera import PiCamera from time import sleep camera = PiCamera() camera.start_preview() sleep(5) camera.capture('/home/pi/image.jpg') camera.stop_preview()
다음은 5초마다 반복하며 사진을 찍는 코드다.
from picamera import PiCamera from time import sleep camera = PiCamera() camera.start_preview() for i in range(5): sleep(5) camera.capture('/home/pi/image%s.jpg' % i) camera.stop_preview()
비디오
파이썬을 이용해 동영상을 찍어본다.
PiCamera의 start_recording 메서드를 이용해 동영상을 찍을 수 있다. start_recording 매개변수에 저장할 파일명을 입력한다. 동영상 촬영을 끝낼 때는 stop_recording 메서드를 이용한다. 다음은 10초 동안 영상을 찍는 것이다.
from picamera import PiCamera
from time import sleep
camera = PiCamera()
camera.start_preview()
camera.start_recording('/home/pi/video.h264')
sleep(10)
camera.stop_recording()
camera.stop_preview()
효과
PiCamera의 다양한 효과를 사용해본다.
해상도
파이 카메라로 찍는 사진의 최대 해상도는 2592 x 1944다. 다음은 최대 해상도로 사진을 찍는 코드다. 최대 해상도로 사진을 찍을때는 framerate을 15로 설정해줘야 한다.
from picamera import PiCamera
from time import sleep
camera = PiCamera()
camera.resolution = (2592, 1944)
camera.framerate = 15
camera.start_preview()
sleep(5)
camera.capture('/home/pi/max.jpg')
camera.stop_preview()
글자 표시
사진에 글자를 추가할 수 있다.
다음은 사진에
Hello World!
를 찍는 코드다.from picamera import PiCamera from time import sleep camera = PiCamera() camera.start_preview() camera.annotate_text = "Hello world!" sleep(5) camera.capture('/home/pi/Desktop/text.jpg') camera.stop_preview()
다음은 글자 크기를 50으로 설정하는 것이다. 글자 크기는 6에서 160까지 설정할 수 있다. 아무것도 설정하지 않은 경우 기본 크기는 32다.
from picamera import PiCamera from time import sleep camera = PiCamera() camera.start_preview() camera.annotate_text_size = 50 camera.annotate_text = "Hello world!" sleep(5) camera.capture('/home/pi/Desktop/text.jpg') camera.stop_preview()
다음은 글자색과 배경색을 바꾸는 것이다. 색을 설정할때는 Color를 import하는 것을 명심해야한다.
from picamera import PiCamera, Color from time import sleep camera = PiCamera() camera.start_preview() camera.annotate_background = Color('blue') camera.annotate_foreground = Color('yellow') camera.annotate_text = " Hello world " sleep(5) camera.capture('/home/pi/Desktop/text.jpg') camera.stop_preview()
밝기
파이 카메라의 밝기를 설정할 수 있다.
다음은 밝기를 70으로 설정하는 것이다. 밝기는 0에서 100까지 설정할 수 있다. 기본 밝기는 50이다.
from picamera import PiCamera from time import sleep camera = PiCamera() camera.start_preview() camera.brightness = 70 sleep(5) camera.capture('/home/pi/bright.jpg') camera.stop_preview()
다음은 밝기를 점차적으로 바꿔주는 코드다.
from picamera import PiCamera from time import sleep camera = PiCamera() camera.start_preview() for i in range(100): camera.annotate_text = "Brightness: %s" % i camera.brightness = i sleep(0.1) camera.stop_preview()
대비
파이 카메라의 대비를 설정할 수 있다. 다음은 대비를 점차적으로 바꿔주는 코드다.
from picamera import PiCamera
from time import sleep
camera = PiCamera()
camera.start_preview()
for i in range(100):
camera.annotate_text = "Contrast: %s" % i
camera.contrast = i
sleep(0.1)
camera.stop_preview()
이미지 효과
파이 카메라의 이미지 효과를 설정할 수 있다. 이때 image_effect 메서드를 사용하며, 다음과 같은 옵션을 사용할 수 있다. 기본 값은 none
이다.
none, negative, solarize, sketch, denoise,
emboss, oilpaint, hatch, gpen, pastel,
watercolor, film, blur, saturation, colorswap,
washedout, posterise, colorpoint, colorbalance,
cartoon, deinterlace1, deinterlace2
다음은
colorswap
효과를 사용한 것이다.from picamera import PiCamera from time import sleep camera = PiCamera() camera.start_preview() camera.image_effect = 'colorswap' sleep(5) camera.stop_preview()
5초마다 이미지 효과를 바꾸는 코드다.
from picamera import PiCamera from time import sleep camera = PiCamera() camera.start_preview() for effect in camera.IMAGE_EFFECTS: camera.image_effect = effect camera.annotate_text = "Effect: %s" % effect sleep(5) camera.stop_preview()
자동 화이트밸런스
파이 카메라에서 자동 화이트밸런스를 설정할 수 있다. 이때 awb_mode 메서드를 사용하며, 다음과 같은 옵션을 사용할 수 있다. 기본 값은 auto
이다. 자동 화이트밸런스의 값들은 camera.AWB_MODES
로 확인할 수 있다.
off, auto, sunlight, cloudy, shade, tungsten,
fluorescent, incandescent, flash, horizon
다음은 sunlight
모드를 사용한 것이다.
from picamera import PiCamera
from time import sleep
camera = PiCamera()
camera.start_preview()
camera.awb_mode = 'sunlight'
sleep(5)
camera.capture('/home/pi/sunlight.jpg')
camera.stop_preview()
노출
파이 카메라의 노출을 설정할 수 있다. 이때 exposure_mode 메서드를 사용하며, 다음과 같은 옵션을 사용할 수 있다. 기본 값은 auto
이다. 노출의 값들은 camera.EXPOSURE_MODES
로 확인할 수 있다.
off, auto, night, nightpreview, backlight,
spotlight, sports, snow, beach, verylong,
fixedfps, antishake, fireworks
다음은 beach
모드를 사용한 것이다.
from picamera import PiCamera
from time import sleep
camera = PiCamera()
camera.start_preview()
camera.exposure_mode = 'beach'
sleep(5)
camera.capture('/home/pi/beach.jpg')
camera.stop_preview()