python实现获取所有可用摄像头(id+名称)可用于opencv

Written by

in

文章目录
  • python下使用opencv库使用VideoCapture调用摄像头时,只能传入枚举号,而不知道相应的相机名称。电脑有多个摄像头时,选择摄像头就会很不方便;电脑只有一个摄像头 时有时摄像头的ID也不一定是0。 我们希望能够获取所有CV可以使用的摄像头信号源。 这个库的目的就是为解决这个问题而生。当前python3.6, 3.7, 3.8, 3.9, 3.10的64位win版本可以直接pip安装。 pip install pycameralist 有需要源码的也可以从我的gitee项目拉取。PyCameraListProject
  • #!/usr/bin/env python # coding=utf-8 from PyCameraList.camera_device import test_list_cameras, list_video_devices, list_audio_devices cameras = list_video_devices() print(dict(cameras)) #return: {0: ‘Intel(R) RealSense(TM) 3D Camera (Front F200) RGB’, 1: ‘NewTek NDI Video’, 2: ‘Intel(R) RealSense(TM) 3D Camera Virtual Driver’, 3: ‘Intel(R) RealSense(TM) 3D Camera (Front F200) Depth’, 4: ‘OBS-Camera’, 5: ‘OBS-Camera2’, 6: ‘OBS-Camera3’, 7: ‘OBS-Camera4’, 8: ‘OBS Virtual Camera’} audios = list_audio_devices() print(dict(audios)) #return: {0: ‘麦克风阵列 (Creative VF0800)’, 1: ‘OBS-Audio’, 2: ‘线路 (NewTek NDI Audio)’}
  • #!/usr/bin/env python # coding=utf-8 from PyCameraList.camera_device import test_list_cameras, list_video_devices, list_audio_devices import cv2 as cv def show_in_cv(camera_id): cap = cv.VideoCapture(camera_id, cv.CAP_DSHOW) cap.set(cv.CAP_PROP_FRAME_WIDTH, 960) cap.set(cv.CAP_PROP_FRAME_HEIGHT, 540) cap.set(cv.CAP_PROP_FPS, 30) i = 0 while True: suc, frame = cap.read() if not suc: break cv.imshow(“preview camera”, frame) cv.waitKey(30) i += 1 return def main(): cameras = list_video_devices() print(f’nn===========================ncamera_list: {cameras}’) idx = 1 camera_id = cameras[idx][0] camera_name = cameras[idx][1] print(f’nn===========================npreview camera: camera_id={camera_id} camera_name={camera_name}’) show_in_cv(camera_id) if __name__ == ‘__main__’: main()  效果:
  • 以上为个人经验,希望能给大家一个参考,也希望大家多多支持风君子博客。 您可能感兴趣的文章: Python+OpenCV实现将旧手机变成监控摄像头 Python使用OpenCV捕获摄像头视频流的完整教程 Python使用OpenCV捕获摄像头视频流并在窗口中显示 Python如何将OpenCV摄像头视频流通过浏览器播放 使用 Python 和 OpenCV 实现摄像头人脸检测并截图功能 Python结合OpenCV和Pyzbar实现实时摄像头识别二维码
  • 目录
    • 缘起
    • 测试代码1
    • 测试代码2
    • 总结

    python下使用opencv库使用VideoCapture调用摄像头时,只能传入枚举号,而不知道相应的相机名称。电脑有多个摄像头时,选择摄像头就会很不方便;电脑只有一个摄像头 时有时摄像头的ID也不一定是0。

    我们希望能够获取所有CV可以使用的摄像头信号源。

    这个库的目的就是为解决这个问题而生。当前python3.6, 3.7, 3.8, 3.9, 3.10的64位win版本可以直接pip安装。

    pip install pycameralist

    有需要源码的也可以从我的gitee项目拉取。PyCameraListProject

    #!/usr/bin/env python
    # coding=utf-8
    
    from PyCameraList.camera_device import test_list_cameras, list_video_devices, list_audio_devices
    
    cameras = list_video_devices()
    print(dict(cameras))
    #return: {0: 'Intel(R) RealSense(TM) 3D Camera (Front F200) RGB', 1: 'NewTek NDI Video', 2: 'Intel(R) RealSense(TM) 3D Camera Virtual Driver', 3: 'Intel(R) RealSense(TM) 3D Camera (Front F200) Depth', 4: 'OBS-Camera', 5: 'OBS-Camera2', 6: 'OBS-Camera3', 7: 'OBS-Camera4', 8: 'OBS Virtual Camera'}
     
    audios = list_audio_devices()
    print(dict(audios))
    #return:  {0: '麦克风阵列 (Creative VF0800)', 1: 'OBS-Audio', 2: '线路 (NewTek NDI Audio)'}
    
    

    #!/usr/bin/env python
    # coding=utf-8
    
    from PyCameraList.camera_device import test_list_cameras, list_video_devices, list_audio_devices
    import cv2 as cv
    
    
    def show_in_cv(camera_id):
        cap = cv.VideoCapture(camera_id, cv.CAP_DSHOW)
        cap.set(cv.CAP_PROP_FRAME_WIDTH, 960)
        cap.set(cv.CAP_PROP_FRAME_HEIGHT, 540)
        cap.set(cv.CAP_PROP_FPS, 30)
        i = 0
        while True:
            suc, frame = cap.read()
            if not suc:
                break
            cv.imshow("preview camera", frame)
            cv.waitKey(30)
            i += 1
        return
    
    
    def main():
        cameras = list_video_devices()
        print(f'nn===========================ncamera_list: {cameras}')
        idx = 1
        camera_id = cameras[idx][0]
        camera_name = cameras[idx][1]
        print(f'nn===========================npreview camera: camera_id={camera_id} camera_name={camera_name}')
        show_in_cv(camera_id)
    
    
    if __name__ == '__main__':
        main()
    

     效果:

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持风君子博客。

    您可能感兴趣的文章:

    • Python+OpenCV实现将旧手机变成监控摄像头
    • Python使用OpenCV捕获摄像头视频流的完整教程
    • Python使用OpenCV捕获摄像头视频流并在窗口中显示
    • Python如何将OpenCV摄像头视频流通过浏览器播放
    • 使用 Python 和 OpenCV 实现摄像头人脸检测并截图功能
    • Python结合OpenCV和Pyzbar实现实时摄像头识别二维码

    站内搜索