• 【OpenCV】使用OpenCV调用手机摄像头


    一、前言

    Droidcam 是一款可以将手机变成网络摄像头的工具,我们可以利用 Droidcam 让 OpenCV 拥有调用手机摄像头的能力。

    请添加图片描述

    二、步骤

    2.1 安装 DroidCam

    在手机和电脑上分别安装 DroidCam 的客户端和服务端

    下载地址:https://pan.baidu.com/s/1DrBn3P1Bx-SXa4d6oziifA?pwd=gr1o
    提取码:gr1o

    2.2 测试连接状态

    手机和电脑需要连接同一个 Wifi(或电脑连接手机的热点)。

    打开手机上的 DroidCam 服务端,使用电脑浏览器访问下面的网址

    请添加图片描述

    如果出现以下页面,表示 DroidCam 已安装成功,最后要退出浏览器。

    同一时间只能有一个软件调用手机摄像头,如果不关闭浏览器,后面使用 OpenCV 调用手机摄像头将报错。

    请添加图片描述

    2.3 连接手机摄像头

    此时手机已经成为了网络摄像头,可以通过下面的链接访问它的视频流

    http://:/mjpegfeed?[分辨率]

    • 分辨率可以选择
      • 320x240
      • 640x480
      • 960x720
      • 1280x720
      • 1920x1080

    注意:调用手机摄像头的期间不要退出手机上的 DroidCam。


    例:手机端 DroidCam 截图如下,那么手机摄像头的视频流链接就是:

    http://192.168.31.211:4747/mjpegfeed

    请添加图片描述

    此时就可以通过 OpenCV 调用手机摄像头

    cap = cv2.VideoCapture("http://192.168.31.211:4747/mjpegfeed")
    
    • 1

    完整代码

    '''
    Author: CloudSir
    @Github: https://github.com/CloudSir
    Date: 2022-05-13 10:24:00
    LastEditTime: 2022-07-27 11:47:08
    LastEditors: CloudSir
    Description: 
    '''
    import cv2
    
    def get_DroidCam_url(ip, port=4747, res='480p'):
        res_dict = {
            '240p': '320x240',
            '480p': '640x480',
            '720p': '1280x720',
            '1080p': '1920x1080',  
        }
        url = f'http://{ip}:{port}/mjpegfeed?{res_dict[res]}'
        return url
    
    
    # DroidCam 显示的IP地址、端口号和相机分辨率(可选 240p,480p,720p,1080p)
    cap = cv2.VideoCapture(get_DroidCam_url('192.168.31.211', 4747, '720p'))
    
    while True:
        ret, frame = cap.read()
        if ret:
            cv2.imshow('image', frame)
    
        key = cv2.waitKey(1)
        # 按q退出程序
        if key == ord('q'):
            break
    
    # 释放VideoCapture
    cap.release()
    # 销毁所有的窗口
    cv2.destroyAllWindows()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39

    三、参考资料

  • 相关阅读:
    【解决】多卡服务器GPU不能多用户同时使用的问题
    vue实现聊天栏定位到最底部(超简单、可直接复制使用)
    【SpringBoot】数据校验API
    利用 Arcgis计算面要素长度、宽度
    【数据结构】带头双向循环链表
    设计模式学习(九):装饰器模式
    STL(第三课):list
    Program Header Table(转载)
    《隐私计算简易速速上手小册》第2章:关键技术介绍(2024 最新版)
    linux下mysql主从复制
  • 原文地址:https://blog.csdn.net/qq_34802028/article/details/126012524