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