2025-09-29 09:19:40 +08:00
|
|
|
import io
|
|
|
|
|
import base64
|
|
|
|
|
from PIL import Image
|
|
|
|
|
from picamera2 import Picamera2
|
|
|
|
|
import sys
|
|
|
|
|
|
|
|
|
|
# 原代码6. 摄像头模块完整逻辑
|
|
|
|
|
class CameraModule:
|
|
|
|
|
def __init__(self):
|
|
|
|
|
try:
|
|
|
|
|
self.camera = Picamera2()
|
|
|
|
|
cam_config = self.camera.create_still_configuration(main={"size": (320, 240)})
|
|
|
|
|
self.camera.configure(cam_config)
|
|
|
|
|
self.camera.start()
|
|
|
|
|
print("📷 摄像头模块初始化成功")
|
|
|
|
|
except Exception as e:
|
|
|
|
|
print(f"❌ 摄像头失败:{str(e)}")
|
|
|
|
|
self.camera = None
|
|
|
|
|
|
|
|
|
|
def capture_base64(self):
|
|
|
|
|
if not self.camera:
|
|
|
|
|
return None
|
|
|
|
|
try:
|
|
|
|
|
img_array = self.camera.capture_array()
|
|
|
|
|
img_byte = io.BytesIO()
|
|
|
|
|
Image.fromarray(img_array).save(img_byte, format="JPEG", quality=80)
|
|
|
|
|
return base64.b64encode(img_byte.getvalue()).decode("utf-8")
|
|
|
|
|
except Exception as e:
|
|
|
|
|
print(f"❌ 拍摄失败:{str(e)}")
|
|
|
|
|
return None
|