- 深度學(xué)習(xí)與計(jì)算機(jī)視覺:項(xiàng)目式教材
- 彭飛 張強(qiáng)編著
- 664字
- 2024-12-11 17:11:51
1.3 任務(wù)2:視頻的獲取、顯示和保存
1.3.1 任務(wù)描述
基于龍芯平臺(tái),利用OpenCV和本地?cái)z像頭獲取視頻、顯示視頻和保存視頻。
1.3.2 技術(shù)準(zhǔn)備
在計(jì)算機(jī)中,視頻資源可以源自專用攝像機(jī)、網(wǎng)絡(luò)攝像頭,也可以源自本地視頻文件或圖像序列文件。視頻處理的是運(yùn)動(dòng)圖像,而不是靜止圖像。OpenCV的VideoCapture類和VideoWriter類是視頻處理中重要的類,提供了視頻處理功能,可以支持多種格式的視頻文件。
VideoCapture類是捕獲視頻對(duì)象的類,支持返回獲取的外部視頻對(duì)象。通過對(duì)返回的外部視頻對(duì)象進(jìn)行讀取,VideoWriter類可用作把視頻對(duì)象保存至本地的程序接口,完成視頻的顯示、保存操作。
視頻處理的基本操作步驟如下。
(1)以視頻文件或者攝像頭作為數(shù)據(jù)源,創(chuàng)建VideoCapture對(duì)象。
(2)調(diào)用VideoCapture對(duì)象的read()方法獲取視頻中的幀,這里每一幀都是一幅圖像。獲取視頻的流程圖如圖1-2所示。

▲圖1-2 獲取視頻的流程圖
(3)調(diào)用VideoWriter對(duì)象的write()方法將幀寫入指定的視頻文件。保存視頻的流程圖如圖1-3所示。

▲圖1-3 保存視頻的流程圖
1.3.3 任務(wù)實(shí)施
通過本地?cái)z像頭獲取視頻、顯示視頻并保存視頻的代碼如下。
import cv2 # 通過本地?cái)z像頭獲取視頻并保存至當(dāng)前文件夾 # 創(chuàng)建VideoCapture對(duì)象,視頻源為默認(rèn)攝像頭0 cap = cv2.VideoCapture(0) # 檢查攝像頭是否成功打開 if (cap.isOpened() == False): print("Error ") # 默認(rèn)分辨率取決于系統(tǒng) # 將分辨率從float類型轉(zhuǎn)換為int類型 frame_width = int(cap.get(3)) frame_height = int(cap.get(4)) # 定義編解碼器并創(chuàng)建VideoWriter對(duì)象,把輸出結(jié)果存儲(chǔ)在r8c_SaveVideo.avi文件中 out = cv2.VideoWriter('Resources/r8c_SaveVideo.avi', cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'), 35,(frame_width, frame_height)) # 循環(huán)讀取視頻幀,直到視頻結(jié)束 while True: ret, frame = cap.read() if ret == True: # 將視頻幀寫入文件r8c_SaveVideo.avi out.write(frame) # 顯示視頻幀 cv2.imshow('frame', frame) # 按Q鍵停止記錄 if cv2.waitKey(1) & 0xFF == ord('q'): break # 跳出循環(huán) else: break # 釋放視頻捕獲器以及視頻寫對(duì)象 cap.release() out.release() # 關(guān)閉所有的窗口 cv2.destroyAllWindows()
視頻獲取與顯示結(jié)果如圖1-4所示。

▲圖1-4 視頻獲取與顯示結(jié)果
推薦閱讀
- 人工智能開發(fā)語言:Python
- 深度學(xué)習(xí)與計(jì)算機(jī)視覺:項(xiàng)目式教材
- 腦機(jī)穿越:腦機(jī)接口改變?nèi)祟愇磥?/a>
- 可解釋人工智能導(dǎo)論
- 豆包:人人都能上手的AI工具
- 一本書讀懂大模型:技術(shù)創(chuàng)新、商業(yè)應(yīng)用與產(chǎn)業(yè)變革
- 人工智能原理與應(yīng)用教程
- 被人工智能操控的金融業(yè)
- 人類的終極命運(yùn)
- AI加速器架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)
- 科學(xué)的極致:漫談人工智能
- 因果推斷:基于圖模型分析
- 基于機(jī)器學(xué)習(xí)的聲發(fā)射信號(hào)處理算法研究
- 邊緣計(jì)算與人工智能應(yīng)用開發(fā)技術(shù)
- 破解深度學(xué)習(xí)(核心篇):模型算法與實(shí)現(xiàn)