import cv2 import win32com.client class CAM_UTIL: def __init__(self, cam1_name='USB Camera', cam2_name="PC Camera",): self.webcam_list = None self.cam1 = cam1_name self.cam2 = cam2_name self.list_webcams() # 获取摄像头列表 def list_webcams(self): # 创建一个WMI客户端实例 wmi = win32com.client.GetObject("winmgmts:") webcams = wmi.InstancesOf("Win32_PnPEntity") # 创建摄像头和索引字典 webcam_dict = {} index = 0 for device in webcams: name = getattr(device, 'Name', None) pnp_class = getattr(device, 'PNPClass', None) if pnp_class == 'Camera': # 将设备名字和索引添加到字典中 print(f"{name},{pnp_class}") if name is not None and self.cam1 in name: # 将设备名字和索引添加到字典中 webcam_dict[self.cam1] = index index += 1 elif name is not None and self.cam2 in name: # 将设备名字和索引添加到字典中 webcam_dict[self.cam2] = index index += 1 self.webcam_list = webcam_dict print(webcam_dict) # 按名称重新排序 webcam_dict = dict(sorted(webcam_dict.items(), key=lambda x: x[0])) print(webcam_dict) return webcam_dict