python+opencv用电脑调用手机摄像头或其他网路摄像头

文章目录

  • 1 获取手机摄像头或网络摄像头的ip
  • 1.1 获取手机摄像头的ip
  • 1.2 获取网络摄像头的IP
  • 1.3 关于RTSP协议
  • 2 python+opencv用电脑打开手机摄像头
  • 2.1 打开手机摄像头python程序
  • 2.2 调用显示结果
  • 3 注意事项
  • 3.1 有效的URL格式
  • 3.2 网络连接
  • 1 获取手机摄像头或网络摄像头的ip

    1.1 获取手机摄像头的ip

    1、直接在应用商店下载IP摄像头APP

    2、打开IP摄像头应用程序,获取手机摄像头头的ip

    打开IP摄像头应用显示如下,然后点击打开IP摄像头服务器,然后就会获取到手机摄像头的IP


    然后可以看到连个URL:

  • rtsp协议的IP:rtsp://192.168.3.16:8554/live
  • http协议的IP:http://192.168.3.16:8081
  • 最下面的工具栏:

  • 左下角第一个:切换手机的前置和后置摄像头

  • 第二个:手电筒,当切换到后置摄像头时,可以打开手电筒

  • 第三个:设置摄像头打开画面的分辨率大小,可以设置的分辨率大小分别为;

  • 1920 × 1080 1920\times1080 1920×1080
  • 1280 × 720 1280\times720 1280×720
  • 960 × 540 960\times540 960×540
  • 352 × 288 352\times288 352×288
  • 第四个:可以设置流媒体协议,以及其他设置,默认我们是设置为:RTSP服务器,其他的设置如下

  • 多摄像头:iPhone XS以上版本支持
  • 运功检测
  • RTMP推流
  • RTSP服务器
  • 第五个:列举了所有的IP的URL,用去添加到其他设备上

  • 1.2 获取网络摄像头的IP

    一般购买的网络摄像头上都会有一个二维码,扫描二维码后查看网络摄像头匹配的软件,即可查看到网络摄像头的IP

    1.3 关于RTSP协议

    由于我们这里用到这个协议,下面简要介绍一下该协议;

    RTSPReal Time Streaming Protocol):实时流传输协议,该协议是一个应用层协议,这个协议定义了,多个应用程序如何通过IP网络传输多媒体数据(即视频流)

    RTSP协议是一个双向的,如下图:

  • HTTP协议:是客户端发出请求,服务端响应
  • RTSP协议:客户端服务端都可以发出请求
  • 2 python+opencv用电脑打开手机摄像头

    2.1 打开手机摄像头python程序

    电脑上打开手机上的摄像头完整程序:

    import cv2
    
    
    # url = "http://admin:admin@192.168.3.11:8081"
    # 程序是执行状态,但是没有打开摄像头
    # url = "http://admin:123456@192.168.3.16:8081"
    # 正确打开摄像头
    
    url = "rtsp://admin:admin@192.168.3.16:8554/live"
    # 直接返回错误:[rtsp @ 000001ee2b0824c0] method DESCRIBE failed: 401 Unauthorized
    
    # url = "rtsp://admin:123456@192.168.3.16:8554/live"
    # [rtsp @ 0000019250a424c0] method DESCRIBE failed: 404 Stream Not Found  手机的摄像头会被打开,然后程序报错
    
    print('start')
    cap = cv2.VideoCapture(url)#读取视频流
    while(cap.isOpened()):
        ret, frame = cap.read()
        print('success')
        cv2.imshow('frame',frame)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    
    cap.release()
    cv2.destroyAllWindows()
    

    http://admin:123456@192.168.3.16:8081*

    URL说明:
    *http:是传输协议

  • admin:用户名,默认为admin
  • 123456:是密码,默认就是123456
  • @IP:@符号后面跟摄像头的局域IP地址
  • :port:冒号后面跟端口号
  • 2.2 调用显示结果

    你也可以直接把http://admin:123456@192.168.3.16:8081这个URL粘贴到浏览器中,也是可以访问到的,结果如下:

    3 注意事项

    3.1 有效的URL格式

    上面有效的URL为:

  • http://admin:123456@192.168.3.16:8081
  • rtsp://admin:123456@192.168.3.16:8554/live
  • 写成如下形式的URL是无效的:

  • http://admin:admin@192.168.3.11:8081
  • rtsp://admin:admin@192.168.3.16:8554/live
  • rtsp://admin:admin@192.168.3.16:8554
  • 有些人使用默认用户名和密码都是admin也是可以的,我测试不行,大家自行测试

    3.2 网络连接

    手机和电脑要在同一个局域网,即手机和电脑连接的是同一个WIFI

    参考:https://zhuanlan.zhihu.com/p/40649346 # 暴力测试打开其他摄像头
    参考:https://www.codenong.com/cs106100497/
    参考:http://www.cxyzjd.com/article/qq_41358574/115475611

    作者:点亮~黑夜

    物联沃分享整理
    物联沃-IOTWORD物联网 » python+opencv用电脑调用手机摄像头或其他网路摄像头

    发表回复