Huaxu Sentinel Active Safety Platform with embedded algorithm code, Docker Compose setup, and vendored dataset scaffolds for clone-and-run. Co-authored-by: Cursor <cursoragent@cursor.com>
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) |