#coding:utf-8 import cv2 import time import 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()): # time.sleep(10) # while(True): ''' 函數名:cap.read() 功 能:返回兩個值 先返回一個布爾值,如果視頻讀取正確,則為 True,如果錯誤,則為 False,也可用來判斷是否到視頻末尾 再返回一個值,為每一幀的圖像,該值是一個三維矩陣 通用接收方法為: ret,frame = cap.read(); 這樣 ret 存儲布爾值,frame 存儲圖像 若使用一個變量來接收兩個值,如 frame = cap.read() 則 frame 為一個元組,原來使用 frame 處需更改為 frame[1] 返回值:R1:布爾值 R2:圖像的三維矩陣 ''' ret_flag,Vshow=cap.read() cv2.imshow('Capture_Test',Vshow)#窗口顯示,顯示名為Capture k=cv2.waitKey(1) #&oxFF 每幀數據延遲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’,退出 break cap.release()#釋放攝像頭 cv2.destoryAllWindows()#刪除建立的全部窗口
注意:運行的時候,不知道怎么回事,可能是注釋的原因
以下為完成,運行的成功的代碼:
import cv2 import time cap=cv2.VideoCapture(0) cap.set(3,900) cap.set(4,900) while(cap.isOpened()): ret_flag, Vshow = cap.read() cv2.imshow('Capture', Vshow) k=cv2.waitKey(1) if k==ord('s'): print('222222') print(cap.get(3)) print(cap.get(4)) elif k==ord('q'): print('完成') break print('攝像頭捕獲成功') # pass # time.sleep(1) cap.release() cv2.destoryAllWindows()