48 lines
1.5 KiB
Python
48 lines
1.5 KiB
Python
"""
|
|
Camera
|
|
|
|
MicroPython library for the Camera(Inherit C module)
|
|
=======================================================
|
|
@dahanzimin From the Mixly Team
|
|
"""
|
|
|
|
import time
|
|
import base64
|
|
import jpeg
|
|
from _camera import *
|
|
from jpeg import Encoder
|
|
from machine import SoftI2C, Pin
|
|
from mixgo_sant import onboard_bot
|
|
|
|
|
|
class Camera(Camera):
|
|
def __init__(self, frame_size=FrameSize.R240X240, pixel_format=PixelFormat.RGB565, hmirror=False, vflip=False, **kwargs):
|
|
onboard_bot.cam_en(1, 150)
|
|
super().__init__(frame_size=frame_size, pixel_format=pixel_format, **kwargs)
|
|
self.set_hmirror(not hmirror)
|
|
time.sleep_ms(50)
|
|
self.set_vflip(not vflip)
|
|
time.sleep_ms(50)
|
|
SoftI2C(scl=Pin(47), sda=Pin(48), freq=400000) # 恢复I2C
|
|
|
|
def deinit(self):
|
|
super().deinit()
|
|
onboard_bot.cam_en(0, 100)
|
|
|
|
def snapshot(self, path=None, formats=0, quality=90, rotation=0):
|
|
if formats == 0 and path is None:
|
|
return self.capture()
|
|
else:
|
|
_encoder = Encoder(pixel_format="RGB565_BE", quality=quality, rotation=rotation, width=self.get_pixel_width(), height=self.get_pixel_height())
|
|
_jpeg = _encoder.encode(self.capture())
|
|
del _encoder
|
|
if path is None:
|
|
if formats == 1:
|
|
return _jpeg
|
|
else:
|
|
return b'data:image/jpg;base64,' + base64.b64encode(_jpeg)
|
|
else:
|
|
with open(path, 'wb') as f:
|
|
f.write(_jpeg)
|
|
return True
|