標籤:ras 否則 auto 方法 筆記 需要 視頻編碼 border open
本節主要學習的是通過
.VideoCapture()
調用網路攝影機讀取映像資料,以及使用
cap.set( propId , value )
cap.get( propId )
擷取或者更改視頻屬性。
其中,propId 的值為 0 - 18,19個值並不是每個都可以進行修改,每個值對應的屬性以及功能如下如下:
參數 |
值 |
功能/意義 |
CV_CAP_PROP_POS_MSEC |
0 |
視頻檔案的當前位置(以毫秒為單位)或視頻捕獲時間戳記。 |
CV_CAP_PROP_POS_FRAMES |
1 |
基於0的索引將被解碼/捕獲下一幀。 |
CV_CAP_PROP_POS_AVI_RATIO |
2 |
視頻檔案的相對位置:0 - 電影的開始,電影的1 - 結束。 |
CV_CAP_PROP_FRAME_WIDTH |
3 |
視頻每一幀的寬。 |
CV_CAP_PROP_FRAME_HEIGHT |
4 |
視頻每一幀的高。 |
CV_CAP_PROP_FPS |
5 |
視頻的幀速。 |
CV_CAP_PROP_FOURCC |
6 |
4個字元表示的視頻編碼器格式。 |
CV_CAP_PROP_FRAME_COUNT |
7 |
視頻的幀數。 |
CV_CAP_PROP_FORMAT |
8 |
byretrieve()返回的Mat對象的格式。 |
CV_CAP_PROP_MODE |
9 |
指示當前捕獲模式的後端特定值。 |
CV_CAP_PROP_BRIGHTNESS |
10 |
映像的亮度(僅適用於相機)。 |
CV_CAP_PROP_CONTRAST |
11 |
映像對比(僅適用於相機)。 |
CV_CAP_PROP_SATURATION |
12 |
映像的飽和度(僅適用於相機)。 |
CV_CAP_PROP_HUE |
13 |
映像的色相(僅適用於相機)。 |
CV_CAP_PROP_GAIN |
14 |
映像的增益(僅適用於相機)。 |
CV_CAP_PROP_EXPOSURE |
15 |
曝光(僅適用於相機)。 |
CV_CAP_PROP_CONVERT_RGB |
16 |
表示映像是否應轉換為RGB的布爾標誌。 |
CV_CAP_PROP_WHITE_BALANCE |
17 |
目前不支援 |
CV_CAP_PROP_RECTIFICATION |
18 |
立體攝像機的整流標誌(注意:只有當前支援DC1394 v 2.x後端) |
代碼如下:
#coding:utf-8import cv2import numpy as np"""函數名:cv2.VideoCapture()功 能:通過網路攝影機捕獲即時映像資料傳回值:有參數一:網路攝影機代號,0為預設網路攝影機,筆記本內建網路攝影機一般為 0 或者填寫視頻名稱直接載入本地視頻檔案"""cap = cv2.VideoCapture(0)#建立一個 VideoCapture 對象"""函數名:cap.set( propId , value )功 能:設定視頻參數。設定視頻的寬高值和網路攝影機有關 使用筆記本內建網路攝影機時只能設定為 1280*720 以及 640*480,哪怕設定值不同時都會自動校正過來,並且仍然返回 True傳回值:布爾值參數一:需要設定的視頻參數參數二:設定的參數值"""cap.set(3,480)cap.set(4,320)flag = 1;#設定一個標誌,用來輸出視頻資訊"""函數名:cv2.isOpened()功 能:返回一個布爾值( True / False ),檢查是否初始化成功,成功返回 True傳回值:布爾值"""while(cap.isOpened()):#迴圈讀取每一幀 """ 函數名:cap.read() 功 能:返回兩個值 先返回一個布爾值,如果視頻讀取正確,則為 True,如果錯誤,則為 False,也可用來判斷是否到視頻末尾 再返回一個值,為每一幀的映像,該值是一個三維矩陣 通用接收方法為: ret,frame = cap.read(); 這樣 ret 儲存布爾值,frame 儲存映像 若使用一個變數來接收兩個值,如 frame = cap.read() 則 frame 為一個元組,原來使用 frame 處需更改為 frame[1] 傳回值:R1:布爾值 R2:映像的三維矩陣 """ ret_flag , Vshow = cap.read() #gray = cv2.cvtColor(Vshow,cv2.COLOR_BGR2GRAY) #cv2.imshow("Gray",gray) cv2.imshow("Capture_Test",Vshow) #視窗顯示,顯示名為 Capture_Test k = cv2.waitKey(1) & 0xFF #每幀資料延時 1ms,延時不能為 0,否則讀取的結果會是靜態幀 if k == ord(‘s‘): #若檢測到按鍵 ‘s’,列印字串 """ 函數名:cap.get( propId ) 功 能:查詢視頻的參數 傳回值:無 參數一:查詢的視頻參數,其中部分值可以使用 cap.set() 進行修改 """ print(cap.get(3)); print(cap.get(4)); elif k == ord(‘q‘): #若檢測到按鍵 ‘q’,退出 breakcap.release() #釋放網路攝影機cv2.destroyAllWindows()#刪除建立的全部視窗
python+opencv開啟網路攝影機,儲存視頻、拍照功能的實現