【计算机视觉 · OpenCV】使用 OpenCV 调用手机摄像头

一、前言

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

【计算机视觉 · OpenCV】使用 OpenCV 调用手机摄像头_第1张图片

二、步骤

2.1 安装 DroidCam

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

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

2.2 测试连接状态

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

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

【计算机视觉 · OpenCV】使用 OpenCV 调用手机摄像头_第2张图片

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

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

【计算机视觉 · OpenCV】使用 OpenCV 调用手机摄像头_第3张图片

2.3 连接手机摄像头

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

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

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

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


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

http://192.168.31.211:4747/mjpegfeed

【计算机视觉 · OpenCV】使用 OpenCV 调用手机摄像头_第4张图片

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

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

完整代码

'''
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()

三、参考资料

  • 使用OpenCV读取DroidCam的摄像头数据(局域网内):https://www.jianshu.com/p/523867890957
  • DroidCam - 让手机充当无线摄像头[Android] - 小众软件:https://www.appinn.com/droidcam-for-android/

你可能感兴趣的:(#,Python,计算机视觉,opencv,计算机视觉,python)