32 lines
No EOL
1,006 B
Python
32 lines
No EOL
1,006 B
Python
|
|
import io
|
|
import time
|
|
import picamera
|
|
from phytopi.camera.base_camera import BaseCamera
|
|
|
|
|
|
class Camera(BaseCamera):
|
|
@staticmethod
|
|
def set_live_mode(live_mode=True):
|
|
Camera.live_mode = live_mode
|
|
|
|
@staticmethod
|
|
def frames():
|
|
with picamera.PiCamera() as camera:
|
|
# let camera warm up
|
|
time.sleep(2)
|
|
|
|
if Camera.live_mode:
|
|
stream = io.BytesIO()
|
|
for _ in camera.capture_continuous(stream, 'jpeg', use_video_port=True):
|
|
# return current frame
|
|
stream.seek(0)
|
|
yield stream.read()
|
|
|
|
# reset stream for next frame
|
|
stream.seek(0)
|
|
stream.truncate()
|
|
else:
|
|
for filename in camera.capture_continuous('tl-{timestamp:%Y%m%d_%H%M}.jpg', 'jpg',
|
|
use_video_port=False):
|
|
yield open(filename, 'rb').read() |