文章插圖

文章插圖
1、從視頻文件獲取圖像
使用cap = cv2.VideoCapture(‘文件名稱’)構建視頻文件的cap實例 。cap.read()方法逐幀提取視頻,每一幀為一幅圖像,cap.read()方法返回的是一個二元組,下標0的元素值為True或False,如果為Flase表示讀取文件完成 。下標1的元素為圖像對象,也是一個numpy數組類型的數據 。cap.isOpened()用來檢查cap實例是否已打開 。cap.release()釋放實例 。下面這個例子中讀取視頻文件并顯示,達到播放的效果,同時加入了waitKey()返回值的判斷,輸入按鍵’Q’或者’q’就可以退出循環 。在這里waityKey()返回的數值和0xff相與后再和字符的ord()值比較,是為了規避某些系統中waitKey()返回的數值在高字節為非0值的情況 。
import cv2cap = cv2.VideoCapture('..\vtest.avi')while cap.isOpened():ret, img = cap.read()if ret is not True:print("讀取完成,退出")break#處理imgcv2.imshow('vedio', img)#檢查按鍵key = cv2.waitKey(20) & 0xffifkey == ord('q') or key == ord('Q') :breakprint('cap.isOpened():',cap.isOpened())cap.release()print('cap.isOpened():',cap.isOpened())運行結果:cap.isOpened(): Truecap.isOpened(): False【opencv 讀取視頻 opencv mp4視頻文件的讀寫】從運行結果看,cap.release()前cap.isOpened()的返回值一直為True 。2、從動態圖片獲取圖像
使用VideoCapture(文件名)方法打開gif格式的圖片,操作過程和上述普通的視頻文件類似 。
3、從相機獲取圖像
打開相機需要用相機的設備編號(數值型整數)作為入參傳入VideoCapture(相機編號),比如cap = cv2.VideoCapture(0)構建編號為0的相機訪問實例,第2臺相機則傳入1,以此類推,后續步驟的處理方法和讀取視頻文件一樣 。
import cv2cap = cv2.VideoCapture(0)while cap.isOpened():ret, img = cap.read()if ret is not True:print("讀取失敗,退出")break#處理imgcv2.imshow('vedio', img)#檢查按鍵key = cv2.waitKey(20) & 0xffifkey == ord('q') or key == ord('Q') :breakprint('cap.isOpened():',cap.isOpened())cap.release()print('cap.isOpened():',cap.isOpened())4、寫入視頻文件寫視頻文件需要創建VideoWriter對象,依次傳入4個參數:
第1個為文件名稱;第2個為編碼方式,其中編碼方式和文件名稱后綴有對應關系;第3個參數為每秒寫入的幀數,參考數值為25,符合人眼習慣;第4個參數是圖像大小,int類型;
常用的文件名稱后綴和編碼方式的對應關系有:
fourcc=cv2.VideoWriter_fourcc('M','J','P','G')fourcc=cv2.VideoWriter_fourcc(*'MJPG')圖像大小可以通過cat.get(propId)方法獲取,但是該方法獲取的是float類型,需要轉換為int類型再傳入VideoWriter 。cap = cv2.VideoCapture(0)width = cap.get(cv2.CAP_PROP_FRAME_WIDTH) height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)width = int(width)height = int(height)下面是一個創建XVID、MJPG、mp4v等3種編碼方式視頻文件的例子:import cv2 #獲取圖像寬高cap = cv2.VideoCapture(0)width = cap.get(cv2.CAP_PROP_FRAME_WIDTH) height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)width = int(width)height = int(height)print(width,height) #創建VideoWriter對象fourcc = cv2.VideoWriter_fourcc(*'XVID')out = cv2.VideoWriter('output.avi', fourcc, 25.0, (width,height))fourcc = cv2.VideoWriter_fourcc(*'MJPG')out2 = cv2.VideoWriter('output2.avi', fourcc, 25.0, (width,height))fourcc = cv2.VideoWriter_fourcc(*'mp4v')out3 = cv2.VideoWriter('output3.mp4', fourcc, 25.0, (width,height))while cap.isOpened():ret, img = cap.read()print(img.shape)if ret is not True:print("讀取失敗,退出")break#處理imgcv2.imshow('vedio', img)out.write(img)out2.write(img)out3.write(img)#檢查按鍵key = cv2.waitKey(1) & 0xffifkey == ord('q') or key == ord('Q') :break cap.release()out.release()out2.release() out3.release()- 成人高考輔導視頻教程 中山成人高考輔導
- 安卓短信發送 安卓讀取短信代碼
- 中國十大視頻監控品牌 視頻監控器什么牌子好
- 南京UFO目擊事件 中國ufo目擊事件視頻
- 中國ufo事件視頻錄像 中國ufo事件視頻
- 美國ufo事件真實外星人視頻 中國ufo事件真實外星人
- 手機mp4視頻播放器軟件下載 mp4視頻播放器app下載安卓
- 視頻壓縮大小用什么軟件 哪個軟件壓縮視頻最小
- 可以轉碼的視頻播放器有哪些 什么轉碼器好用又免費
- 快手剪切視頻怎么剪切 華為手機剪切視頻怎么剪切
