티스토리 뷰

카테고리 없음

3.2. 파이카메라 스트림으로 캡처

뽀로로친구에디 2018. 8. 24. 20:58

3.2. 파이카메라 스트림으로 캡처

이미지를 파일과 유사한 객체 (socket (), io.BytesIO 스트림, 기존 열린 파일 객체 등)로 캡처하는 것은 사용하는 capture () 메소드의 출력으로 객체를 지정하는 것만 큼 간단합니다. :

from io import BytesIO
from time import sleep
from picamera import PiCamera

# Create an in-memory stream
my_stream = BytesIO()
camera = PiCamera()
camera.start_preview()
# Camera warm-up time
sleep(2)
camera.capture(my_stream, 'jpeg')



이 형식은 위의 경우에 명시적으로 지정됩니다. BytesIO 객체에는 파일 이름이 없으므로 카메라는 사용할 형식을 자동으로 알아낼 수 없습니다.

한 가지 명심해야 할 점은 (파일 이름 지정과 달리) 캡처 후에 스트림이 자동으로 닫히지 않는다는 것입니다. picamera는 스트림을 열지 않았기 때문에 스트림을 닫지 않을 것이라고 가정합니다. 다만, 오브젝트에 flush 메소드가있는 경우, 이것은 캡처 리턴하기 전에 불려갑니다. 한 번 캡처가 반환되면 개체가 여전히 닫혀 있어야하지만 다른 프로세스에서 데이터에 액세스 할 수 있어야 합니다.


from time import sleep
from picamera import PiCamera

# Explicitly open a new file called my_image.jpg
my_file = open('my_image.jpg', 'wb')
camera = PiCamera()
camera.start_preview()
sleep(2)
camera.capture(my_file)
# At this point my_file.flush() has been called, but the file has
# not yet been closed
my_file.close()


위의 경우 카메라가 파일 이름에 대해 my_file 객체를 조사 할 때 형식을 지정할 필요가 없었습니다 (구체적으로 제공된 객체에서 이름 속성을 찾습니다). BytesIO와 같은 Python에 내장 된 스트림 클래스를 사용할뿐만 아니라 사용자 정의 출력을 구성 할 수도 있습니다.

댓글
최근에 달린 댓글
글 보관함
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Total
Today
Yesterday
    뽀로로친구에디
    최근에 올라온 글