OpenCV 網路攝像頭

Salman Mehmood 2022年6月13日
OpenCV 網路攝像頭

在這個簡短的演示中,我們將學習如何在 Python 和 OpenCV 的幫助下訪問網路攝像頭並顯示實時提要。

在 Python 和 OpenCV 的幫助下訪問網路攝像頭

每當我們從事任何需要訪問實時攝像頭饋送的計算機視覺專案時,如果我們想要進行面罩檢測,或者我們設計一個想要進行社交距離檢測的專案。

在這種情況下,我們必須訪問相機的實時資訊,並且無論我們從相機接收到什麼實時資訊,下一條指令都可以用於不同的目的。

讓我們看一下使用 OpenCV 訪問實時攝像機源的程式碼。一旦我們匯入 opencv 庫,我們必須使用 opencv 庫中的 VideoCapture() 方法。

它捕獲來自不同來源的視訊。它可以從你的本地計算機系統或膝上型電腦的攝像頭中捕獲視訊,或者你可以從任何基於 IP 的攝像頭中捕獲視訊。

我們必須在括號中提供視訊捕獲的來源。

WC=cv2.VideoCapture(0)

現在你可以看到我們提供了源 0,這意味著它將訪問我們膝上型電腦的預設攝像頭。如果我們想訪問儲存在計算機系統中的任何視訊,我們可以將視訊的完整路徑作為字串傳遞。

如果要訪問任何基於 IP 的攝像機,則必須提供基於 IP 的攝像機的完整路徑。我們考慮一個虛擬地址,它會是這樣的。

WC=cv2.VideoCapture('https://3.4.5.6/cam2')

但在本文中,我們將嘗試訪問膝上型電腦的預設攝像頭,為此,我們需要將源設定為 0。它將捕獲來自攝像機的實時資訊。

一旦我們捕獲了視訊,我們將它儲存在一個物件中,然後,我們將嘗試從視訊中讀取每一幀或從相機接收到的實時資訊。

視訊只不過是一系列影象,在計算機視覺領域,我們稱之為幀。

現在我們將在 while 迴圈中編寫一堆程式碼;它將無限地繼續閱讀相機的實時資訊。我們使用 read() 方法從 WC 物件中讀取幀,而該幀只是一個影象。

while True:
    # this will read images/frames one by one
    RET,F=WC.read()
    cv2.imshow('Live Feeds',F)

下一條指令在 imshow() 方法的幫助下顯示這些影象,該方法有兩個引數。一個是視窗名稱,它將出現在右上角,第二個是影象的內容,numpy 陣列。

在下一條指令中,我們接收來自實時攝像頭的提要,它將繼續在我們的程式中顯示幀或影象。我們必須打破這個迴圈來停止這個無限迴圈或相機的實時饋送。

我們需要使用 v2.waitKey(1),如果我們提到我們在鍵盤上按下的鍵應該是退出 while 迴圈,它將保持視窗開啟直到我們採取行動。

如果我們按下定義的鍵,它將自動停止我們從攝像機訪問的實時源。

在程式碼的最後,我們釋放了我們的 WC 物件。我們呼叫 destroyAllWindows() 方法,它將銷燬我們開啟的所有視窗以顯示我們的實時提要。

import numpy as np
import cv2

# Capture video from storage/laptop camera/IP based camera
WC=cv2.VideoCapture(0)

while True:
    # this will read images/frames one by one
    RET,F=WC.read()
    cv2.imshow('Live Feeds',F)
    KEY=cv2.waitKey(1) # wait for key press
    if KEY==ord('q'):
        break
WC.release()
cv2.destroyAllWindows()

現在我們可以看到攝像頭正在捕捉實時視訊。

使用 Python 和 OpenCV 訪問網路攝像頭

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn