From 5b18b592d0d3159ecbea8ccac06cd5968853d4e7 Mon Sep 17 00:00:00 2001 From: liyubo Date: Wed, 11 Mar 2026 17:20:50 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=8E=E5=9B=BE=E7=89=87=E4=B8=AD=E6=8F=90?= =?UTF-8?q?=E5=8F=96=E7=BD=91=E6=A0=BC=E5=AE=BD=E9=AB=98=E5=83=8F=E7=B4=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- util/yolo2pix_new.py | 50 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 44 insertions(+), 6 deletions(-) diff --git a/util/yolo2pix_new.py b/util/yolo2pix_new.py index d179349..72a71d7 100644 --- a/util/yolo2pix_new.py +++ b/util/yolo2pix_new.py @@ -23,6 +23,7 @@ GRID_WIDTH = 108 # 网格像素宽 GRID_HEIGHT = 102 # 网格像素高 COVER_RATIO = 0.01 # mask 覆盖比例阈值 RESERVED_CELL_NUM = 20 # 道路灾害格子过滤掉两侧数据,只保留每行中间20个格子 +ROAD_RECOGNIZE_HEIGHT = 2 # 每两米一张照片 # ---------------- 路面类别映射 ---------------- CLASS_MAP_ASPHALT = { @@ -558,12 +559,14 @@ def format_number_to_k_code(number): # ---------------- 主函数-共享目录 ---------------- def process_dir(road_dict,pile_dict,dir="output",cell_area=CELL_AREA,cell_width=CELL_WIDTH,cell_height=CELL_HEIGHT,grid_width=GRID_WIDTH,grid_height=GRID_HEIGHT): os.makedirs(dir,exist_ok=True) - # 网格像素宽 + # 识别宽度(米) road_recognize_width = road_dict.get('识别宽度(米)', 3.6) - grid_width = round(4096 * CELL_WIDTH / road_recognize_width) - # 道路灾害格子过滤掉两侧数据,只保留每行中间20个格子 - cell_index_start = round((road_recognize_width / CELL_WIDTH - RESERVED_CELL_NUM) / 2) - cell_index_end = cell_index_start + RESERVED_CELL_NUM + road_recognize_height = ROAD_RECOGNIZE_HEIGHT + + grid_width = None + grid_height = None + cell_index_start = None + cell_index_end = None # 解压 # 读取桩号映射 # 遍历图片 @@ -577,7 +580,22 @@ def process_dir(road_dict,pile_dict,dir="output",cell_area=CELL_AREA,cell_width= if not os.path.exists(label_file): print(f"⚠️ 找不到标签: {label_file}") continue - out_txt, class_cells, road_type, all_cell_num = yoloseg_to_grid_share_dir(road_dict,pile_dict,image_path,label_file,cell_index_start,cell_index_end,grid_width=grid_width) + + # 读取图片并计算宽高像素点 + if grid_width is None or grid_height is None : + img = cv2.imread(image_path) + if img is not None : + h, w = img.shape[:2] + # 网格像素宽高 + grid_width = round(w * CELL_WIDTH / road_recognize_width) + grid_height = round(h * CELL_WIDTH / road_recognize_height) + print(f"通过图片获取到grid_width = {grid_width}, grid_height = {grid_height}") + # 道路灾害格子过滤掉两侧数据,只保留每行中间20个格子 + cell_index_start = round((road_recognize_width / CELL_WIDTH - RESERVED_CELL_NUM) / 2) + cell_index_end = cell_index_start + RESERVED_CELL_NUM + + out_txt, class_cells, road_type, all_cell_num = yoloseg_to_grid_share_dir( + road_dict,pile_dict,image_path,label_file,cell_index_start,cell_index_end,grid_width=grid_width,grid_height=grid_height) # 写每张图独立 _grid.txt grid_txt_path = os.path.splitext(image_path)[0]+"_grid.txt" with open(grid_txt_path,'w',encoding='utf-8') as f: @@ -996,6 +1014,26 @@ if __name__=="__main__": # calc_cell_area, calc_grid_width, calc_grid_height = calc_grid_param(2048, 4096, 3.6, 2) # print(f"calc_cell_area={calc_cell_area}, calc_grid_width={calc_grid_width}, calc_grid_height={calc_grid_height}") + image_path = r"D:\devForBdzlWork\ai-train_platform\predictions\C005500155A\20250515-075419-696.jpg" + road_recognize_width = 3.6 + road_recognize_height = 2 + grid_width = None + grid_height = None + cell_index_start = None + cell_index_end = None + # 读取图片并计算宽高像素点 + if grid_width is None or grid_height is None : + img = cv2.imread(image_path) + if img is not None : + h, w = img.shape[:2] + # 网格像素宽高 + grid_width = round(w * CELL_WIDTH / road_recognize_width) + grid_height = round(h * CELL_WIDTH / road_recognize_height) + print(f"通过图片获取到grid_width = {grid_width}, grid_height = {grid_height}") + # 道路灾害格子过滤掉两侧数据,只保留每行中间20个格子 + cell_index_start = round((road_recognize_width / CELL_WIDTH - RESERVED_CELL_NUM) / 2) + cell_index_end = cell_index_start + RESERVED_CELL_NUM + output_dir = "D:/devForBdzlWork/ai-train_platform/predictions/jlp/C006500107A" pile_dict = get_pile_dict(output_dir) road_dict = get_road_dict(output_dir)