|
@@ -112,28 +112,9 @@ class DualCameraSystem:
|
|
|
"""
|
|
"""
|
|
|
logger.info("初始化双摄像头联动系统...")
|
|
logger.info("初始化双摄像头联动系统...")
|
|
|
|
|
|
|
|
- # 初始化SDK
|
|
|
|
|
- sdk_path = os.path.join(
|
|
|
|
|
- self.config.get('sdk_path', SDK_PATH['lib_path']),
|
|
|
|
|
- self.config.get('netsdk', SDK_PATH['netsdk'])
|
|
|
|
|
- )
|
|
|
|
|
-
|
|
|
|
|
- try:
|
|
|
|
|
- self.sdk = DahuaSDK(sdk_path)
|
|
|
|
|
- if not self.sdk.init():
|
|
|
|
|
- logger.error("SDK初始化失败")
|
|
|
|
|
- return False
|
|
|
|
|
- logger.info("SDK初始化成功")
|
|
|
|
|
- except Exception as e:
|
|
|
|
|
- logger.error(f"SDK加载失败: {e}")
|
|
|
|
|
- return False
|
|
|
|
|
-
|
|
|
|
|
- # 初始化摄像头
|
|
|
|
|
- panorama_config = self.config.get('panorama_camera', PANORAMA_CAMERA)
|
|
|
|
|
- self.panorama_camera = PanoramaCamera(self.sdk, panorama_config)
|
|
|
|
|
-
|
|
|
|
|
- ptz_config = self.config.get('ptz_camera', PTZ_CAMERA)
|
|
|
|
|
- self.ptz_camera = PTZCamera(self.sdk, ptz_config)
|
|
|
|
|
|
|
+ # 先初始化检测器(YOLO/PyTorch),再加载大华SDK
|
|
|
|
|
+ # 大华SDK与PyTorch共享进程空间时可能导致内存冲突,
|
|
|
|
|
+ # 先加载PyTorch可避免SDK的内存映射覆盖PyTorch运行时
|
|
|
|
|
|
|
|
# 初始化检测器 (YOLO11)
|
|
# 初始化检测器 (YOLO11)
|
|
|
try:
|
|
try:
|
|
@@ -158,6 +139,29 @@ class DualCameraSystem:
|
|
|
except Exception as e:
|
|
except Exception as e:
|
|
|
logger.warning(f"编号检测器初始化失败: {e}")
|
|
logger.warning(f"编号检测器初始化失败: {e}")
|
|
|
|
|
|
|
|
|
|
+ # 初始化SDK(在检测器之后,避免SDK内存映射与PyTorch冲突)
|
|
|
|
|
+ sdk_path = os.path.join(
|
|
|
|
|
+ self.config.get('sdk_path', SDK_PATH['lib_path']),
|
|
|
|
|
+ self.config.get('netsdk', SDK_PATH['netsdk'])
|
|
|
|
|
+ )
|
|
|
|
|
+
|
|
|
|
|
+ try:
|
|
|
|
|
+ self.sdk = DahuaSDK(sdk_path)
|
|
|
|
|
+ if not self.sdk.init():
|
|
|
|
|
+ logger.error("SDK初始化失败")
|
|
|
|
|
+ return False
|
|
|
|
|
+ logger.info("SDK初始化成功")
|
|
|
|
|
+ except Exception as e:
|
|
|
|
|
+ logger.error(f"SDK加载失败: {e}")
|
|
|
|
|
+ return False
|
|
|
|
|
+
|
|
|
|
|
+ # 初始化摄像头
|
|
|
|
|
+ panorama_config = self.config.get('panorama_camera', PANORAMA_CAMERA)
|
|
|
|
|
+ self.panorama_camera = PanoramaCamera(self.sdk, panorama_config)
|
|
|
|
|
+
|
|
|
|
|
+ ptz_config = self.config.get('ptz_camera', PTZ_CAMERA)
|
|
|
|
|
+ self.ptz_camera = PTZCamera(self.sdk, ptz_config)
|
|
|
|
|
+
|
|
|
# 初始化联动控制器
|
|
# 初始化联动控制器
|
|
|
self.coordinator = Coordinator(
|
|
self.coordinator = Coordinator(
|
|
|
self.panorama_camera,
|
|
self.panorama_camera,
|