<button id="ssm6u"><optgroup id="ssm6u"></optgroup></button>
  • 跳轉至

    手機作為IP攝像頭

    概要

    本節課阿凱給大家講解了如何使用IP攝像頭APP,將你的手機變成IP攝像頭,同時介紹了如何使用OpenCV讀取IP攝像頭的視頻流。

    keywords IP 手機 IP-Camera 網絡視頻流

    目錄

    1-下載IP攝像頭APP

    在你手機的應用市場里面搜索這款名字叫做IP攝像頭的APP, 圖標就是下面這樣的:

    ipcamera.png

    2-局域網

    需要確定你的手機與電腦處在同一個局域網下,即他們連接同一個WIFI。

    3-運行APP

    點擊運行IP攝像頭APP , 點擊下方的打開IP攝像頭服務器 的選項。
    0811_1.png

    是否繼續,點擊確定

    0811_2.png

    服務器開啟之后,會提示你這個視頻流服務器在局域網中的IP還有端口號。

    0811_3.png

    在當下的url是

    http://192.168.43.1:8081
    

    在沒有客戶端連接的時候,你可以點擊右上角設置畫面的分辨率。

    可以點擊切換 選擇使用前置攝像頭還是后置攝像頭。

    4-在網頁中預覽視頻流

    在瀏覽器中輸入地址

    http://192.168.43.1:8081
    

    IPCAMERA-admin.png

    接下來就需要填入用戶名跟密碼,默認為:

    用戶名: admin
    密碼: admin
    

    下方有很多工具欄, 你可以設定圖像的分辨率,快照等一系列操作。

    ip-cam.png

    5-OpenCV讀取視頻流

    如果我們像進行圖像處理,就必須讀取到IP攝像頭提供的視頻流,通信協議為http。

    核心代碼就兩行

    # 制定URL  http://用戶名:密碼@IP地址:端口號/
    ip_camera_url = 'http://admin:[email protected]:8081/'
    # 創建一個VideoCapture
    cap = cv2.VideoCapture(ip_camera_url)
    

    TODO ? Windows下要怎么做

    IP需要自己修改, 端口號默認為8081

    完整代碼如下:

    ipcam-cap.py

    # -*- coding: utf-8 -*- 
    '''
    讀取手機攝像頭的視頻流
    
    
    1. 手機與電腦鏈接同一個WIFI熱點
    
    2. 需要sudo權限:
    sudo python  ipcam-cap.py
    '''
    import cv2
    import time
    
    ip_camera_url = 'http://admin:[email protected]:8081/'
    # 創建一個窗口
    cv2.namedWindow('ip_camera', flags=cv2.WINDOW_NORMAL | cv2.WINDOW_FREERATIO)
    
    cap = cv2.VideoCapture(ip_camera_url)
    
    if not cap.isOpened():
        print('請檢查IP地址還有端口號,或者查看IP攝像頭是否開啟,另外記得使用sudo權限運行腳本')
    
    while cap.isOpened():
        ret, frame = cap.read()
        cv2.imshow('ip_camera', frame)
    
    
        if cv2.waitKey(1) == ord('q'):
            # 退出程序
            break
    
    cv2.destroyWindow('ip_camera')
    cap.release()
    

    代碼必須使用管理員權限運行

    sudo python  ipcam-cap.py
    

    運行代碼,初始化需要一段時間。

    不出意外的話, 你可以看到下面的這個窗口。

    ipcamera-demo.png

    6-設置VideoCapture的緩存區大小

    有時候,如果你在OpenCV中做圖像處理的時候,如果圖像處理比較耗時,就導致存在VideoCapture緩存區的圖像隊列越積越多。 你就會發現延時好高啊,過了半天畫面才更新,實際的畫面與VideoCapture的實際畫面時差越拉越大。

    這個問題,可以通過縮小緩沖區尺寸來解決。

    cap.set 設定VideoCapture的各種屬性,這里指定緩沖區的尺寸為1:

    cap.set(cv2.CAP_PROP_BUFFERSIZE,1)
    

    完整一些的代碼片段:

    # 攝像頭的IP地址  
    # http://用戶名:密碼@IP地址:端口/
    ip_camera_url = 'http://admin:[email protected]:8081/'
    # 創建一個VideoCapture
    cap = cv2.VideoCapture(ip_camera_url)
    # 設置緩存區的大小 !!!
    cap.set(cv2.CAP_PROP_BUFFERSIZE,1)
    

    韩国精品无码一区二区三区,精品无码一区二区三区AV,欧洲丰满美熟女乱又伦AV,亚洲午夜久久久影院伊人