OpenCV 影像串流 (python)

透過 OpenCV 的介面,顯示網路攝影機 ( webcam ) 所拍攝到的即時影像。

首先我們要先安裝 Python 版的 OpenCV

程式的一開始先透過 cv2.VideoCapture 指定攝影機,筆電上 0 通常代表內建的攝影機,1 是外接的。

透過 set() 可以設定拍攝的一些基本參數,如長、寬、幀數 ( Frames ) 等等。

set 有兩個參數,第一個是要設定的項目,第二個是該項目要設定的參數。

本隻程式僅使用了 3 個,如下表所示,其他更多參數請參考文件檔

參數參數代碼本程式使用之參數
cv.CAP_PROP_FRAME_WIDTH3160
cv.CAP_PROP_FRAME_HEIGHT4120
cv.CAP_PROP_FPS530

isOpened() 可以檢測攝影機是否正常打開,如果沒有成功打開就結束程式。

透過 while 迴圈,不斷的讀取影像,以產生串流的感覺 ( 把 while 迴圈拿掉可以變成單純的圖片拍攝 ) , 透過 waitKey() 可以終止串流。

read() 會讀取一張影像,ret 代表是否取得成功,frame 為取得的影像。

imshow() 可以顯示影像,第一個參數為視窗的名子,第二個參數為影像。

( 注意 : 只要使用 imshow 後面一定要有 waitKey() 才能正確顯示,可以參考下方連結 )

OpenCV 影像無法顯示 (python) ?

結束時也記得把攝影機、剛剛建立的視窗釋放掉。

import cv2

cap = cv2.VideoCapture(0)
cap.set(3,160)
cap.set(4,120)
cap.set(cv2.CAP_PROP_FPS, 30)

if not cap.isOpened():
    print("Can't open camera !")
    exit()
while(True):
    ret, frame = cap.read()
    if not ret:
        print("Can't receive frame")
        break
    cv2.imshow('frame', frame)
    if cv2.waitKey(1) == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()

結果如下所示

方便的話請幫我點選網頁四周的廣告,一點點鼓勵是我繼續寫的動力

Add a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *