CPP 静态合成

This commit is contained in:
2026-05-25 15:37:16 +08:00
parent 04561d2697
commit 01360b2dab
92 changed files with 1074421 additions and 28 deletions

33
web.py
View File

@@ -17,6 +17,21 @@ from PyQt5.QtGui import QImage, QPixmap, QFont
from PyQt5.QtCore import Qt, QTimer, pyqtSignal, QObject
from PIL import Image, ImageDraw, ImageFont
# ==========================================================
# OpenCL GPU 加速初始化
# ==========================================================
_OCL_ENABLED = False
try:
cv2.ocl.setUseOpenCL(True)
_OCL_ENABLED = cv2.ocl.useOpenCL()
if _OCL_ENABLED:
ocl_devs = cv2.ocl.Device.getDefault()
print("[INFO] OpenCL GPU 加速已启用: {}".format(ocl_devs.name()))
else:
print("[WARNING] OpenCL 不可用,将使用 CPU")
except Exception as e:
print("[WARNING] OpenCL 初始化失败 ({}), 将使用 CPU".format(e))
try:
from surround_view import FisheyeCameraModel, BirdView
import surround_view.param_settings as settings
@@ -293,6 +308,9 @@ class SerialWorker(threading.Thread):
buf.append(b)
if len(buf) == 10:
self._parse_rx_frame(bytes(buf))
print("[RX] active: {} radar: {} stopped: {} reverse: {}".format(
self._active_dirs, self._radar_dist, self._stopped, self._reverse))
buf.clear()
elif len(buf) > 10:
buf.clear()
@@ -317,7 +335,7 @@ class RemoteSignals(QObject):
exit_settings = pyqtSignal()
class RemoteWorker(threading.Thread):
def __init__(self, port="/dev/ttyS3", baudrate=115200):
def __init__(self, port="/dev/ttyS3", baudrate=9600):
super().__init__(daemon=True)
self.port = port
self.baudrate = baudrate
@@ -476,7 +494,7 @@ class BirdViewWorker(threading.Thread):
while self.running:
self.frame_idx += 1
if self.frame_idx % self.framestep != 0:
time.sleep(0.005)
time.sleep(0.033)
continue
frames = []
for name, model in zip(self.names, self.models):
@@ -484,13 +502,14 @@ class BirdViewWorker(threading.Thread):
if frame is None:
break
try:
frames.append(
model.flip(model.project(model.undistort(frame))))
frame = model.process_frame(frame)
if frame is not None:
frames.append(frame)
except Exception as e:
print("[BIRD ERROR] {}".format(e))
break
if len(frames) != 4:
time.sleep(0.01)
time.sleep(0.033)
continue
try:
self.birdview.update_frames(frames)
@@ -670,7 +689,7 @@ class MultiCameraBirdView:
return
self.caps = []
self.which_cameras = {"front":0, "left":1, "back":2, "right":3}
self.which_cameras = {"front":2, "left":3, "back":0, "right":1}
for name in self.names:
cap_id = self.which_cameras.get(name, 0)
cap = cv2.VideoCapture(cap_id, cv2.CAP_V4L2)
@@ -698,7 +717,7 @@ class MultiCameraBirdView:
if img is None:
continue
frames.append(
model.flip(model.project(model.undistort(img))))
model.process_frame(img))
if len(frames) == 4:
self.birdview.get_weights_and_masks(frames)
print("[INFO] 权重初始化完成")