今天涉及到一个摄像头的项目,但是该项目是提供给第三方的,所以也就不大清楚摄像头的id。这里讲述三种搜索可用摄像头的实现代码
1、PyCameraList
这个是最简单的
from PyCameraList.camera_device import list_video_devices,
cameras = list_video_devices()
camera_id_list = []
for idx in range(0,len(cameras)):
camera_id = cameras[idx][0]
camera_id_list.append(camera_id)
但是这种方法需要安装PyCameraList ,目前能找到的版本只有
PyCameraList-1.0.0-cp36-cp36m-win_amd64.whl
因此,该方法并不通用
2、pygame
这个是借助 pygame中camera来实现的
import pygame.camera
pygame.camera.init()
camera_id_lis = pygame.camera.list_cameras()
这种返回的结果形式是字符串形式的
["/dev/video0","/dev/video1"]
如果要用opencv处理,需要对上述字符串进行解析。
3、利用opencv遍历方法来实现
import cv2
camera_id_list = []
for device in range(0,100):
stream = cv2.VideoCapture(device)
grabbed = stream.grab()
stream.release()
if not grabbed:
continue
camera_id_list.append(device)
上述代码从0~100作为id号进行遍历,搜索到可用的id记录下来。