66 lines
2.9 KiB
Python
66 lines
2.9 KiB
Python
import os
|
||
import cv2
|
||
|
||
|
||
camera_names = ["front", "back", "left", "right"]
|
||
|
||
# --------------------------------------------------------------------
|
||
# (shift_width, shift_height): 鸟瞰图超出标定布的横向和纵向范围
|
||
# 适配桌面环境,确保总范围不超过桌面尺寸
|
||
shift_w = 50 # 左右方向各扩展10cm
|
||
shift_h = 50 # 前后方向各扩展10cm
|
||
|
||
# 标定布与车身之间的间隙(横向和纵向)
|
||
inn_shift_w = 5 # 左右方向间隙
|
||
inn_shift_h = 8 # 前后方向间隙
|
||
|
||
# 标定布主体尺寸(宽×高)
|
||
calib_width = 60 # 标定布宽度60cm
|
||
calib_height = 100 # 标定布高度100cm
|
||
|
||
# 拼接后图像的总尺寸
|
||
total_w = calib_width + 2 * shift_w # 60 + 2×10 = 80cm(宽)
|
||
total_h = calib_height + 2 * shift_h # 100 + 2×10 = 120cm(高)
|
||
|
||
# 车身占据的矩形区域四角坐标
|
||
# 确保与小车实际尺寸匹配:宽12cm,长20cm
|
||
xl = shift_w + (calib_width - 12) // 2 + inn_shift_w # 10 + 24 + 5 = 39
|
||
xr = xl + 12 # 右侧坐标,确保宽度12cm
|
||
yt = shift_h + (calib_height - 20) // 2 + inn_shift_h # 10 + 40 + 8 = 58
|
||
yb = yt + 20 # 底部坐标,确保长度20cm
|
||
# --------------------------------------------------------------------
|
||
|
||
project_shapes = {
|
||
"front": (total_w, yt), # 前相机投影区域:宽80cm × 高58cm
|
||
"back": (total_w, total_h - yb), # 后相机投影区域:宽80cm × 高42cm
|
||
"left": (total_h, xl), # 左相机投影区域:高120cm × 宽39cm
|
||
"right": (total_h, total_w - xr) # 右相机投影区域:高120cm × 宽29cm
|
||
}
|
||
|
||
# 四个标记点的像素位置,运行get_projection_map.py时需按相同顺序点击
|
||
project_keypoints = {
|
||
"front": [(shift_w + 12, shift_h), # 前标定板左上
|
||
(shift_w + 48, shift_h), # 前标定板右上
|
||
(shift_w + 12, shift_h + 16), # 前标定板左下
|
||
(shift_w + 48, shift_h + 16)], # 前标定板右下
|
||
|
||
"back": [(shift_w + 12, shift_h), # 后标定板左上
|
||
(shift_w + 48, shift_h), # 后标定板右上
|
||
(shift_w + 12, shift_h + 16), # 后标定板左下
|
||
(shift_w + 48, shift_h + 16)], # 后标定板右下
|
||
|
||
"left": [(shift_h + 28, shift_w), # 左标定板左上
|
||
(shift_h + 64, shift_w), # 左标定板右上
|
||
(shift_h + 28, shift_w + 12), # 左标定板左下
|
||
(shift_h + 68, shift_w + 12)], # 左标定板右下
|
||
|
||
"right": [(shift_h + 28, shift_w), # 右标定板左上
|
||
(shift_h + 64, shift_w), # 右标定板右上
|
||
(shift_h + 28, shift_w + 12), # 右标定板左下
|
||
(shift_h + 68, shift_w + 12)] # 右标定板右下
|
||
}
|
||
|
||
# 加载并调整车身图标大小以匹配车身区域
|
||
car_image = cv2.imread(os.path.join(os.getcwd(), "images", "car.png"))
|
||
car_image = cv2.resize(car_image, (xr - xl, yb - yt)) # 调整为12×20cm的车身大小
|
||
|