32 lines
1.0 KiB
Plaintext
32 lines
1.0 KiB
Plaintext
# tools/camera_tool.py
|
|
from .base_tool import BaseTool
|
|
import picamera
|
|
import time
|
|
import base64
|
|
from io import BytesIO
|
|
|
|
class CameraTool(BaseTool):
|
|
def get_functions(self):
|
|
return [{
|
|
"name": "take_picture",
|
|
"description": "Take a picture using the Raspberry Pi camera",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {},
|
|
"required": []
|
|
}
|
|
}]
|
|
|
|
def execute(self, function_name, **kwargs):
|
|
if function_name == "take_picture":
|
|
with picamera.PiCamera() as camera:
|
|
camera.resolution = (1024, 768)
|
|
camera.start_preview()
|
|
# Camera warm-up time
|
|
time.sleep(2)
|
|
image_stream = BytesIO()
|
|
camera.capture(image_stream, 'jpeg')
|
|
image_stream.seek(0)
|
|
image_base64 = base64.b64encode(image_stream.getvalue()).decode('utf-8')
|
|
return f"data:image/jpeg;base64,{image_base64}"
|