diff --git a/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/config.txt b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/config.txt new file mode 100644 index 0000000000..e10a0e10dd --- /dev/null +++ b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/config.txt @@ -0,0 +1,2 @@ +生成时间: 2025-12-15 09:27:19.432740 +地图: Carla/Maps/Town10HD_Opt diff --git a/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_001.png b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_001.png new file mode 100644 index 0000000000..bd6f4b30b1 Binary files /dev/null and b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_001.png differ diff --git a/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_002.png b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_002.png new file mode 100644 index 0000000000..f03b0d0430 Binary files /dev/null and b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_002.png differ diff --git a/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_003.png b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_003.png new file mode 100644 index 0000000000..30f806ec22 Binary files /dev/null and b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_003.png differ diff --git a/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_004.png b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_004.png new file mode 100644 index 0000000000..93b6754826 Binary files /dev/null and b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_004.png differ diff --git a/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_005.png b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_005.png new file mode 100644 index 0000000000..2c54ebcc49 Binary files /dev/null and b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_005.png differ diff --git a/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_006.png b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_006.png new file mode 100644 index 0000000000..1332ea63f3 Binary files /dev/null and b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_006.png differ diff --git a/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_007.png b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_007.png new file mode 100644 index 0000000000..61960e692e Binary files /dev/null and b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_007.png differ diff --git a/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_008.png b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_008.png new file mode 100644 index 0000000000..27bcf44026 Binary files /dev/null and b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_008.png differ diff --git a/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_009.png b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_009.png new file mode 100644 index 0000000000..51e09a4645 Binary files /dev/null and b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_009.png differ diff --git a/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_010.png b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_010.png new file mode 100644 index 0000000000..8e8d5c731b Binary files /dev/null and b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_010.png differ diff --git a/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_011.png b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_011.png new file mode 100644 index 0000000000..80672280da Binary files /dev/null and b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_011.png differ diff --git a/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_012.png b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_012.png new file mode 100644 index 0000000000..5b3ac78706 Binary files /dev/null and b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_012.png differ diff --git a/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_013.png b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_013.png new file mode 100644 index 0000000000..821fca2a36 Binary files /dev/null and b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_013.png differ diff --git a/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_014.png b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_014.png new file mode 100644 index 0000000000..db2d03ce07 Binary files /dev/null and b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_014.png differ diff --git a/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_015.png b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_015.png new file mode 100644 index 0000000000..881c2812b9 Binary files /dev/null and b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_015.png differ diff --git a/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_016.png b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_016.png new file mode 100644 index 0000000000..fd8a95656b Binary files /dev/null and b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_016.png differ diff --git a/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_017.png b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_017.png new file mode 100644 index 0000000000..affccd6156 Binary files /dev/null and b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_017.png differ diff --git a/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_018.png b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_018.png new file mode 100644 index 0000000000..984f8b6ce3 Binary files /dev/null and b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_018.png differ diff --git a/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_019.png b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_019.png new file mode 100644 index 0000000000..cf05449809 Binary files /dev/null and b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_019.png differ diff --git a/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_020.png b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_020.png new file mode 100644 index 0000000000..8bc513fe07 Binary files /dev/null and b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_020.png differ diff --git a/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_021.png b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_021.png new file mode 100644 index 0000000000..7fc47e5b08 Binary files /dev/null and b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_021.png differ diff --git a/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_022.png b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_022.png new file mode 100644 index 0000000000..eeb70efea8 Binary files /dev/null and b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_022.png differ diff --git a/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_023.png b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_023.png new file mode 100644 index 0000000000..1fcd935e25 Binary files /dev/null and b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_023.png differ diff --git a/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_024.png b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_024.png new file mode 100644 index 0000000000..b79679996f Binary files /dev/null and b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_024.png differ diff --git a/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_025.png b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_025.png new file mode 100644 index 0000000000..140e305847 Binary files /dev/null and b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_025.png differ diff --git a/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_026.png b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_026.png new file mode 100644 index 0000000000..1a8c3cdf6c Binary files /dev/null and b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_026.png differ diff --git a/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_027.png b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_027.png new file mode 100644 index 0000000000..5a9be09c13 Binary files /dev/null and b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_027.png differ diff --git a/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_028.png b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_028.png new file mode 100644 index 0000000000..18424d92d4 Binary files /dev/null and b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_028.png differ diff --git a/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_029.png b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_029.png new file mode 100644 index 0000000000..05089fcfdb Binary files /dev/null and b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_029.png differ diff --git a/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_030.png b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_030.png new file mode 100644 index 0000000000..006b10febf Binary files /dev/null and b/src/enhance_pedestrian_safety/cvips_data/success_20251215_092719/frame_030.png differ diff --git a/src/enhance_pedestrian_safety/cvips_generation_v1_basic.py b/src/enhance_pedestrian_safety/cvips_generation_v1_basic.py new file mode 100644 index 0000000000..8d754b0c0d --- /dev/null +++ b/src/enhance_pedestrian_safety/cvips_generation_v1_basic.py @@ -0,0 +1,237 @@ +# cvips_smart_final.py +""" +CVIPS 鏅鸿兘鐗堟湰 - 涓嶅啀鍏抽棴杩愯鐨凜ARLA锛屽苟淇鎵鏈夐棶棰 +""" + +import sys +import os +import time +import random # 娣诲姞杩欒 +import traceback +from datetime import datetime + +print("=" * 70) +print("CVIPS 鏁版嵁鐢熸垚鍣 - 鏅鸿兘鐗堟湰") +print("=" * 70) + +# ============================================================ +# 1. 璁剧疆CARLA璺緞 +# ============================================================ +print("\n[1/5] 璁剧疆CARLA璺緞...") +CARLA_EGG = r"D:\carla\carla0914\CARLA_0.9.14\WindowsNoEditor\PythonAPI\carla\dist\carla-0.9.14-py3.7-win-amd64.egg" + +if os.path.exists(CARLA_EGG): + sys.path.append(CARLA_EGG) + print(f"鉁 CARLA璺緞: {os.path.basename(CARLA_EGG)}") +else: + print(f"鉁 鎵句笉鍒癳gg鏂囦欢: {CARLA_EGG}") + sys.exit(1) + +# ============================================================ +# 2. 瀵煎叆CARLA +# ============================================================ +print("\n[2/5] 瀵煎叆CARLA妯″潡...") +try: + import carla + + print("鉁 CARLA妯″潡瀵煎叆鎴愬姛") +except ImportError as e: + print(f"鉁 瀵煎叆澶辫触: {e}") + sys.exit(1) + + +# ============================================================ +# 3. 鏅鸿兘杩炴帴CARLA鏈嶅姟鍣 +# ============================================================ +def smart_connect_to_carla(max_retries=10, retry_delay=3): + """鏅鸿兘杩炴帴CARLA鏈嶅姟鍣紝涓嶅叧闂凡鏈夋湇鍔″櫒""" + print(f"\n[3/5] 杩炴帴鍒癈ARLA鏈嶅姟鍣 (鏈澶氬皾璇晎max_retries}娆)...") + + for attempt in range(1, max_retries + 1): + try: + print(f" 灏濊瘯 {attempt}/{max_retries}...") + + # 鍒涘缓瀹㈡埛绔 + client = carla.Client('localhost', 2000) + client.set_timeout(15.0) + + # 鑾峰彇鏈嶅姟鍣ㄧ増鏈 + server_version = client.get_server_version() + print(f" 鉁 杩炴帴鎴愬姛! 鏈嶅姟鍣ㄧ増鏈: {server_version}") + + # 鑾峰彇涓栫晫 + world = client.get_world() + print(f" 鉁 鍦板浘: {world.get_map().name}") + + return client, world + + except Exception as e: + error_msg = str(e) + print(f" 灏濊瘯 {attempt} 澶辫触: {error_msg[:80]}...") + + # 缁欏嚭鍏蜂綋寤鸿 + if "time-out" in error_msg: + if attempt == 1: + print(f" 鈩 璇风‘淇滳ARLA鏈嶅姟鍣ㄦ鍦ㄨ繍琛") + print(f" 鈩 濡傛灉CARLA姝e湪鍚姩涓紝璇风瓑寰呭嚑绉掗挓") + elif attempt == 3: + print(f" 鈩 濡傛灉CARLA绐楀彛鏃犲搷搴旓紝璇峰皾璇曞湪绐楀彛涓偣鍑讳竴涓") + + if attempt < max_retries: + print(f" 绛夊緟 {retry_delay} 绉掑悗閲嶈瘯...") + time.sleep(retry_delay) + else: + print(f"\n鉁 鎵鏈夎繛鎺ュ皾璇曞け璐") + print(f"\n璇锋鏌:") + print(f"1. CARLA鏈嶅姟鍣ㄦ槸鍚︽鍦ㄨ繍琛 (搴旇鑳界湅鍒3D绐楀彛)") + print(f"2. CARLA绐楀彛鏄惁鍦ㄥ墠鍙 (灏濊瘯鐐瑰嚮涓涓婥ARLA绐楀彛)") + print(f"3. 濡傛灉CARLA鍒氬惎鍔紝鍙兘闇瑕佹洿澶氭椂闂村姞杞") + return None, None + + return None, None + + +# 鏅鸿兘杩炴帴 +client, world = smart_connect_to_carla() + +if not client or not world: + print("\n" + "=" * 70) + print("杩炴帴澶辫触锛") + print("=" * 70) + sys.exit(1) + +# ============================================================ +# 4. 鍒涘缓绠鍗曞満鏅 +# ============================================================ +print("\n[4/5] 鍒涘缓鏁版嵁鏀堕泦鍦烘櫙...") + +try: + # 鍒涘缓杈撳嚭鐩綍 + timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") + output_dir = f"cvips_data/success_{timestamp}" + os.makedirs(output_dir, exist_ok=True) + + print(f"杈撳嚭鐩綍: {output_dir}") + + # 淇濆瓨閰嶇疆 + with open(f"{output_dir}/config.txt", "w") as f: + f.write(f"鐢熸垚鏃堕棿: {datetime.now()}\n") + f.write(f"鍦板浘: {world.get_map().name}\n") + + # 璁剧疆寮傛妯″紡锛堟洿绋冲畾锛 + settings = world.get_settings() + settings.synchronous_mode = False + world.apply_settings(settings) + + # 璁剧疆绠鍗曞ぉ姘 + weather = carla.WeatherParameters( + sun_altitude_angle=90, + cloudiness=0, + precipitation=0, + fog_density=0 + ) + world.set_weather(weather) + print("鉁 澶╂皵璁剧疆瀹屾垚") + + # 鐢熸垚杞﹁締 + blueprint_lib = world.get_blueprint_library() + + # 閫夋嫨绠鍗曡溅杈 + vehicle_bp = None + vehicle_types = [ + 'vehicle.tesla.model3', + 'vehicle.audi.tt', + 'vehicle.nissan.micra', + 'vehicle.mini.cooperst' + ] + + for vtype in vehicle_types: + if blueprint_lib.filter(vtype): + vehicle_bp = random.choice(blueprint_lib.filter(vtype)) + break + + if not vehicle_bp: + vehicle_bp = random.choice(blueprint_lib.filter('vehicle.*')) + + # 鑾峰彇鐢熸垚鐐 + spawn_points = world.get_map().get_spawn_points() + if spawn_points: + spawn_point = random.choice(spawn_points) + print(f"浣跨敤鐢熸垚鐐: ({spawn_point.location.x:.1f}, {spawn_point.location.y:.1f})") + + # 鐢熸垚杞﹁締 + vehicle = world.spawn_actor(vehicle_bp, spawn_point) + print(f"鉁 鐢熸垚杞﹁締: {vehicle.type_id}") + + # 璁剧疆鑷姩椹鹃┒ + vehicle.set_autopilot(True) + + # 娣诲姞绠鍗曟憚鍍忓ご + camera_bp = blueprint_lib.find('sensor.camera.rgb') + camera_bp.set_attribute('image_size_x', '640') + camera_bp.set_attribute('image_size_y', '480') + camera_bp.set_attribute('fov', '90') + + # 鍓嶆憚鍍忓ご + camera_transform = carla.Transform( + carla.Location(x=1.5, z=1.4), + carla.Rotation(pitch=0, yaw=0, roll=0) + ) + camera = world.spawn_actor(camera_bp, camera_transform, attach_to=vehicle) + + # 鍥惧儚淇濆瓨鍥炶皟 + frame_count = [0] + + + def save_image(image): + frame_count[0] += 1 + if frame_count[0] <= 30: # 鍙繚瀛30寮 + image.save_to_disk(f"{output_dir}/frame_{frame_count[0]:03d}.png") + if frame_count[0] % 10 == 0: + print(f" 宸蹭繚瀛 {frame_count[0]}/30 甯") + + + camera.listen(save_image) + print("鉁 鎽勫儚澶村凡瀹夎") + + # 鏀堕泦鏁版嵁 + print("\n[5/5] 鏀堕泦鏁版嵁 (15绉)...") + print("鎸 Ctrl+C 鍙彁鍓嶇粨鏉") + + start_time = time.time() + try: + for i in range(15): + print(f" 杩涘害: {i + 1}/15 绉") + time.sleep(1.0) + + print(f"\n鉁 鏁版嵁鏀堕泦瀹屾垚!") + print(f" 鎬诲抚鏁: {frame_count[0]}") + print(f" 鏁版嵁淇濆瓨鍒: {output_dir}") + + except KeyboardInterrupt: + print(f"\n鏁版嵁鏀堕泦涓柇锛屽凡淇濆瓨 {frame_count[0]} 甯") + + # 娓呯悊 + print("\n娓呯悊鍦烘櫙...") + camera.stop() + camera.destroy() + vehicle.destroy() + print("鉁 鍦烘櫙宸叉竻鐞") + + else: + print("鈿 娌℃湁鎵惧埌鐢熸垚鐐癸紝璺宠繃杞﹁締鐢熸垚") + +except Exception as e: + print(f"鉁 鍒涘缓鍦烘櫙鏃跺嚭閿: {e}") + traceback.print_exc() + +# ============================================================ +# 瀹屾垚 +# ============================================================ +print("\n" + "=" * 70) +print("馃帀 CVIPS 鏁版嵁鐢熸垚瀹屾垚锛") +print("=" * 70) +print(f"CARLA鏈嶅姟鍣ㄤ粛鍦ㄨ繍琛岋紝鍙互缁х画浣跨敤") +print("=" * 70) + +input("\n鎸塃nter閿鍑...") \ No newline at end of file