Major changes: - New frontend (platform/web/): Vite + React 18 + TypeScript + Tailwind - 4-module navigation: 数据送标 / 模型管理 / 车队管理 / 系统管理 - Data catalog with charts (DMS/ADAS/Lane 3-tab view) - Quality review workflow (标注质检): Good/Fine/Bad scoring with auto-advance - Audit enhancements: batch operations, rejection categories, Feishu notifications - Operation audit log (操作日志) - World model simulation studio (仿真工坊) - Dataset version management with snapshots and diff - ADAS 7-class dataset integration (138K images organized + compressed) - User management with Feishu integration and pagination - CRUD/search/filter on all pages, card layout redesign - PIL-optimized image overlay rendering - Auto-snapshot on build, in_review workflow stage - Removed embedded algorithm code (now in workspace)
64 lines
1.3 KiB
Python
64 lines
1.3 KiB
Python
import cv2
|
|
import os
|
|
import os.path as osp
|
|
|
|
|
|
COLORS = [
|
|
(255, 0, 0),
|
|
(0, 255, 0),
|
|
(0, 0, 255),
|
|
(255, 255, 0),
|
|
(255, 0, 255),
|
|
(0, 255, 255),
|
|
(128, 255, 0),
|
|
(255, 128, 0),
|
|
(128, 0, 255),
|
|
(255, 0, 128),
|
|
(0, 128, 255),
|
|
(0, 255, 128),
|
|
(128, 255, 255),
|
|
(255, 128, 255),
|
|
(255, 255, 128),
|
|
(60, 180, 0),
|
|
(180, 60, 0),
|
|
(0, 60, 180),
|
|
(0, 180, 60),
|
|
(60, 0, 180),
|
|
(180, 0, 60),
|
|
(255, 0, 0),
|
|
(0, 255, 0),
|
|
(0, 0, 255),
|
|
(255, 255, 0),
|
|
(255, 0, 255),
|
|
(0, 255, 255),
|
|
(128, 255, 0),
|
|
(255, 128, 0),
|
|
(128, 0, 255),
|
|
]
|
|
|
|
|
|
def imshow_lanes(img, lanes, show=False, out_file=None, width=4):
|
|
lanes_xys = []
|
|
for _, lane in enumerate(lanes):
|
|
xys = []
|
|
for x, y in lane:
|
|
if x <= 0 or y <= 0:
|
|
continue
|
|
x, y = int(x), int(y)
|
|
xys.append((x, y))
|
|
lanes_xys.append(xys)
|
|
lanes_xys.sort(key=lambda xys : xys[0][0])
|
|
|
|
for idx, xys in enumerate(lanes_xys):
|
|
for i in range(1, len(xys)):
|
|
cv2.line(img, xys[i - 1], xys[i], COLORS[idx], thickness=width)
|
|
|
|
|
|
if show:
|
|
cv2.imshow('view', img)
|
|
cv2.waitKey(0)
|
|
|
|
if out_file:
|
|
if not osp.exists(osp.dirname(out_file)):
|
|
os.makedirs(osp.dirname(out_file))
|
|
cv2.imwrite(out_file, img) |