此篇文章主要是給大家介紹一下OpenCV中cv2.VideoCapture函數(shù)的應(yīng)用,并通過cv2.VideoCapture讀取錄像或監(jiān)控攝像頭及其開展儲存幀圖象或者視頻,感興趣的朋友可以看看。
一、詞法:cap=cv2.VideoCapture(0)
表明:主要參數(shù)0表明默認筆記本電腦的內(nèi)嵌第一位監(jiān)控攝像頭,必要時載入已經(jīng)有的小視頻則主要參數(shù)改成錄像所屬途徑途徑,比如:cap=cv2.VideoCapture('video.mp4')
二、詞法:cap.isOpened()
表明:分辨錄像目標(biāo)成功與否載入,取得成功載入錄像目標(biāo)回到True。
三、詞法:ret,frame=cap.read()
表明:按幀載入錄像,傳參ret是布爾型,恰當(dāng)載入則回到True,載入不成功或載入視頻結(jié)尾往往會回到False。frame為每一秒的圖象,這兒圖象是三維立體引流矩陣,即frame.shape=(640,480,3),載入的圖象為BGR格式。
四、詞法:key=cv2.waitKey(1)
表明:等候數(shù)字鍵盤,主要參數(shù)1表明延遲1ms切換至下每幀,主要參數(shù)為0表明表明現(xiàn)階段幀,等同于中止。
五、載入監(jiān)控攝像頭并儲存為視頻代碼講解
import cv2 def videocapture(): cap=cv2.VideoCapture(0)#生成讀取攝像頭對象 width=int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))#獲取視頻的寬度 height=int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))#獲取視頻的高度 fps=cap.get(cv2.CAP_PROP_FPS)#獲取視頻的幀率 fourcc=int(cap.get(cv2.CAP_PROP_FOURCC))#視頻的編碼 #定義視頻對象輸出 writer=cv2.VideoWriter("video_result.mp4",fourcc,fps,(width,height)) while cap.isOpened(): ret,frame=cap.read()#讀取攝像頭畫面 cv2.imshow('teswell',frame)#顯示畫面 key=cv2.waitKey(24) writer.write(frame)#視頻保存 #按Q退出 if key==ord('q'): break cap.release()#釋放攝像頭 cv2.destroyAllWindows()#釋放所有顯示圖像窗口 if __name__=='__main__': videocapture()
六、讀取視頻并按幀進行保存代碼演示:
import numpy as np import cv2 import os def video2image(video_dir,save_dir): cap=cv2.VideoCapture(video_dir)#生成讀取視頻對象 n=1#計數(shù) width=int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))#獲取視頻的寬度 height=int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))#獲取視頻的高度 fps=cap.get(cv2.CAP_PROP_FPS)#獲取視頻的幀率 fourcc=int(cap.get(cv2.CAP_PROP_FOURCC))#視頻的編碼 #定義視頻輸出 #writer=cv2.VideoWriter("teswellvideo_02_result.mp4",fourcc,fps,(width,height)) i=0 timeF=int(fps)#視頻幀計數(shù)間隔頻率 while cap.isOpened(): ret,frame=cap.read()#按幀讀取視頻 #到視頻結(jié)尾時終止 if ret is False: break #每隔timeF幀進行存儲操作 if(n%timeF==0): i+=1 print('保存第%s張圖像'%i) save_image_dir=os.path.join(save_dir,'%s.jpg'%i) print('save_image_dir:',save_image_dir) cv2.imwrite(save_image_dir,frame)#保存視頻幀圖像 n=n+1 cv2.waitKey(1)#延時1ms cap.release()#釋放視頻對象 #讀取文件夾所有視頻,每個視頻按幀保存圖像 def video2image_multi(video_path,save_path): video_list=os.listdir(video_path) for i in range(len(video_list)): video_dir=os.path.join(video_path,video_list<i>) cap=cv2.VideoCapture(video_dir) fps=cap.get(cv2.CAP_PROP_FPS)#視頻的幀率 save_num=0 n=1#計數(shù) timeF=int(fps)#視頻幀計數(shù)間隔頻率 while cap.isOpened(): ret,frame=cap.read() if ret is False: break #每隔timeF幀進行存儲操作 if(n%timeF==0): save_num+=1 save_image_dir=os.path.join(save_path,'%s_%s.jpg'%(i,save_num)) cv2.imwrite(save_image_dir,frame) n=n+1 cv2.waitKey(1) cap.release() print('讀取第%s個視頻完成!!!'%i) if __name__=='__main__': video_to_image(r'E:AIvideo.mp4',r'E:AIvideo2image')
以上就是小編給大家介紹的,希望可以給大家?guī)硪欢◣椭?/p>
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/128696.html
摘要:這次開始學(xué)習(xí)從攝像頭獲取視頻使用獲取視頻要獲取視頻,需要創(chuàng)建一個對象,參數(shù)可以是設(shè)備索引攝像頭索引或視頻文件的名稱。 這次開始學(xué)習(xí)Getting Started with Videos 1從攝像頭獲取視頻 使用cv2.VideoCapture()獲取視頻. cv2.VideoCapture(builtins.object) 要獲取視頻,需要創(chuàng)建一個VideoCapture對象,參數(shù)可以...
摘要:總結(jié)在本文中,我們學(xué)習(xí)了如何使用中的,即通過代碼寫了一個人臉檢測的程序。 OpenCV是如今最流行的計算機視覺庫,而我們今天就是要學(xué)習(xí)如何安裝使用OpenCV,以及如何去訪問我們的攝像頭。然后我們一起來看看寫一個人臉檢測程序是如何地簡單,簡單到只需要幾行代碼。 在開始之前,我假設(shè)你已經(jīng)對Python有一定的了解。當(dāng)然,如果你覺得你還不夠格,這里有推薦一些學(xué)習(xí)Python的電子書,你可以...
摘要:同時打印出了手上的每個結(jié)點的位置變化。解決方案使用國內(nèi)鏡像安裝這時候,考慮使用國內(nèi)鏡像安裝,會快很多。點擊下面的即可。 文章目錄 一、 效果(版本2的效果)二、全...
閱讀 911·2023-01-14 11:38
閱讀 878·2023-01-14 11:04
閱讀 740·2023-01-14 10:48
閱讀 1982·2023-01-14 10:34
閱讀 942·2023-01-14 10:24
閱讀 819·2023-01-14 10:18
閱讀 499·2023-01-14 10:09
閱讀 572·2023-01-14 10:02