파이썬 코드를 이용한 파이카메라 제어


파이썬 코드를 이용해 파이 카메라를 제어하는 방법을 배웁니다.

프리뷰 보기

파이썬을 이용해 카메라의 프리뷰를 본다.

  1. nano를 열고 다음 코드를 입력한 뒤 camera.py로 저장한다.

    from picamera import PiCamera
    from time import sleep
    
    camera = PiCamera()
    
    camera.start_preview()
    sleep(10)
    camera.stop_preview()
    
  2. 다음을 입력해 camera.py를 실행한다. 실행하면 10초간 프리뷰가 뜨는 것을 볼 수 있다.
    python camera.py
    
  3. PiCamerarotation 메서드를 이용해 카메라의 각도를 조정할 수 있다. 다음은 화면을 180도 돌리는 것이다.

    from picamera import PiCamera
    from time import sleep
    
    camera = PiCamera()
    
    camera.rotation = 180
    camera.start_preview()
    sleep(10)
    camera.stop_preview()
    
  4. 다음과 start_previewalpha 매개변수를 이용해 투명도를 조정할 수 있다. 투명도는 0~255 안에서 설정할 수 있다.

    from picamera import PiCamera
    from time import sleep
    
    camera = PiCamera()
    
    camera.start_preview(alpha=200)
    sleep(10)
    camera.stop_preview()
    

사진

파이썬을 이용해 사진을 찍어본다.

  1. PiCameracapture 메서드를 이용해 사진을 찍을 수 있다. 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()
    
  2. 다음은 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()
    

비디오

파이썬을 이용해 동영상을 찍어본다.

PiCamerastart_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()

글자 표시

사진에 글자를 추가할 수 있다.

  1. 다음은 사진에 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()
    
  2. 다음은 글자 크기를 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()
    
  3. 다음은 글자색과 배경색을 바꾸는 것이다. 색을 설정할때는 Colorimport하는 것을 명심해야한다.

    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()
    

밝기

파이 카메라의 밝기를 설정할 수 있다.

  1. 다음은 밝기를 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()
    
  2. 다음은 밝기를 점차적으로 바꿔주는 코드다.

    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
  1. 다음은 colorswap효과를 사용한 것이다.

    from picamera import PiCamera
    from time import sleep
    
    camera = PiCamera()
    
    camera.start_preview()
    camera.image_effect = 'colorswap'
    sleep(5)
    camera.stop_preview()
    
  2. 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()

results matching ""

    No results matching ""