| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- import os
- import shutil
- def match_pcd_meta_tiff(image_json_folder, pcd_folder, depth_tiff_folder,
- output_pcd_folder, output_meta_folder, output_tiff_folder):
- os.makedirs(output_pcd_folder, exist_ok=True)
- os.makedirs(output_meta_folder, exist_ok=True)
- os.makedirs(output_tiff_folder, exist_ok=True)
- # PCD 前缀集合(去掉后缀 .pcd)
- pcd_prefixes = {
- os.path.splitext(f)[0] for f in os.listdir(pcd_folder) if f.lower().endswith('.pcd')
- }
- # image_json_folder 中的 jpg 和 json 文件(带 _color 后缀)
- all_files = os.listdir(image_json_folder)
- color_jpgs = [f for f in all_files if f.lower().endswith('_color.jpg')]
- jsons = [f for f in all_files if f.lower().endswith('_color.json')]
- # 生成前缀映射,去掉后缀 _color.jpg / _color.json
- jpg_prefix_map = {f[:-10]: f for f in color_jpgs} # '_color.jpg' 长度是10
- json_prefix_map = {f[:-11]: f for f in jsons} # '_color.json' 长度是11
- # depth_tiff_folder 中的深度图文件,文件名以 _depth.tiff 或 _depth.tif 结尾
- tiff_files = [f for f in os.listdir(depth_tiff_folder) if f.lower().endswith(('.tiff', '.tif'))]
- # 去掉 _depth.tiff 后缀得到前缀
- tiff_prefix_map = {}
- for f in tiff_files:
- if f.lower().endswith('_depth.tiff'):
- prefix = f[:-11] # 去掉 '_depth.tiff' (11个字符)
- elif f.lower().endswith('_depth.tif'):
- prefix = f[:-10] # 去掉 '_depth.tif' (10个字符)
- else:
- continue
- tiff_prefix_map[prefix] = f
- # 找到同时有 pcd、jpg、json、tiff 的 prefix
- matched_prefixes = []
- for prefix in pcd_prefixes:
- if (prefix in jpg_prefix_map and
- prefix in json_prefix_map and
- prefix in tiff_prefix_map):
- matched_prefixes.append(prefix)
- print(f"共发现 {len(pcd_prefixes)} 个 pcd 文件")
- print(f"共发现 {len(color_jpgs)} 个 jpg (_color.jpg) 文件")
- print(f"共发现 {len(jsons)} 个 json (_color.json) 文件")
- print(f"共发现 {len(tiff_files)} 个 tiff (_depth.tiff/.tif) 文件")
- print(f"匹配到 {len(matched_prefixes)} 组文件")
- # 复制匹配文件到对应输出文件夹
- for prefix in matched_prefixes:
- pcd_src = os.path.join(pcd_folder, prefix + '.pcd')
- jpg_src = os.path.join(image_json_folder, jpg_prefix_map[prefix])
- json_src = os.path.join(image_json_folder, json_prefix_map[prefix])
- tiff_src = os.path.join(depth_tiff_folder, tiff_prefix_map[prefix])
- pcd_dst = os.path.join(output_pcd_folder, prefix + '.pcd')
- jpg_dst = os.path.join(output_meta_folder, jpg_prefix_map[prefix])
- json_dst = os.path.join(output_meta_folder, json_prefix_map[prefix])
- tiff_dst = os.path.join(output_tiff_folder, tiff_prefix_map[prefix])
- shutil.copy2(pcd_src, pcd_dst)
- shutil.copy2(jpg_src, jpg_dst)
- shutil.copy2(json_src, json_dst)
- shutil.copy2(tiff_src, tiff_dst)
- print(f"复制完成,匹配了 {len(matched_prefixes)} 组文件。")
- if __name__ == "__main__":
- image_json_folder = r"\\192.168.50.222\share\zyh\5月彩色钢板数据汇总\513-515数据汇总\0525保存xyz信息的jpg+0516修订后的json"
- pcd_folder = r"\\192.168.50.222\share\zyh\5月彩色钢板数据汇总\513-515数据汇总\pcd"
- depth_tiff_folder = r"\\192.168.50.222\share\zyh\5月彩色钢板数据汇总\513-515数据汇总\depth_tiff"
- output_pcd_folder = r"\\192.168.50.222\share\zyh\5月彩色钢板数据汇总\513-515数据汇总\匹配后的pcd"
- output_meta_folder = r"\\192.168.50.222\share\zyh\5月彩色钢板数据汇总\513-515数据汇总\匹配后的json_jpg"
- output_tiff_folder = r"\\192.168.50.222\share\zyh\5月彩色钢板数据汇总\513-515数据汇总\匹配后的depth_tiff"
- match_pcd_meta_tiff(image_json_folder, pcd_folder, depth_tiff_folder,
- output_pcd_folder, output_meta_folder, output_tiff_folder)
|