電腦攝像頭視頻是如何被獲取和保存的,使用Python OpenCV來實現

2020-12-08 python高手養成

我們上一篇博文中提到了從攝像頭中獲取到了視頻數據(Python OpenCV使用攝像頭捕獲視頻),對於視頻的獲取,我們使用了OpenCV中的VideoCapture類的read()方法,該方法返回兩個結果,第一個結果表示幀讀取是否成功,是個布爾值;第二個結果返回讀取幀的圖像信息。下面,我們來進一步演示如何播放我們讀取到的視頻幀信息。

回顧下前面的內容

【播放視頻原理解釋】

我們知道,從攝像頭中捕獲的每一幀的圖像信息是通過獲取每一幀的圖像來實現的。

原理是什麼呢?

在播放視頻時,我們可以利用同樣的原理,在讀取視頻每一幀圖像時,使用 cv2.waiKey() 函數,在函數中傳入具體的毫秒數據,用以設置適當的持續時間。我們知道,如果cv2.waitKey()函數中參數設置得太低,則視頻就會播放的非常快,如果設置得太高就會播放的很慢(你可以使用這種方法控制視頻的播放速度)。因此,在使用OpenCV來播放視頻時,我們使用waitKey()傳參的方式來實現響應的效果。下面,我們來看下演示代碼。

實時獲取攝像頭幀信息並播放

【如何保存獲取的視頻幀信息】

對於圖像來說,我們使用 cv2.imwrite()即可保存一幅圖像。然而,從攝像頭中獲取到視頻內容後,我們需要處理的信息維度會有所增加。除了需要知道保存的視頻名稱,我們還需要知道保存的視頻編碼格式(不知道的自行百度),視頻是否為彩色。這些信息,都被封裝在了cv2.VideoWriter類中。

下面內容很重要

使用方法:cv2.VideoWriter(videoName, fourCC, fps, (frame_width, frame_height), isColor)

videoName:傳入保存視頻文件的名稱

fourCC:指定視頻文件的編碼格式,fourCC是一個4位元組碼,用來確定視頻編碼格式。

常見傳入參數為:

'I420':YUV編碼類型,文件名後綴為.avi

'PIMI':MPEG-1編碼類型,文件名後綴為.avi

'XVID':MPEG-4編碼類型,文件名後綴為.avi

'THEO':Ogg Vorbis,文件名後綴為.ogv

'FLV1':Flash視頻,文件名後綴為.flv

各個系統常見支持編碼格式如下:

Fedora: DIVX, XVID, MJPG, X264, WMV1, WMV2. Windows:DIVX

對於編碼的使用方法如下:

首先定義好編碼,以XVID編碼格式為例:

fourcc = cv2.VideoWriter_fourcc(*'XVID')

或者是fourcc = cv2.VideoWriter_fourcc('X', 'V', 'I', 'D')

然後將fourcc傳入到VideoWriter對象參數中即可。

fps:幀速率。

frame_width:視頻中圖像的寬度

frame_height:視頻中圖像的高度

isColor:是否是彩色,是個布爾值,默認為True。

【實時獲取內置攝像頭視頻並保存】

下面我們來演示一下這個用法,從攝像頭中逐幀讀取視頻信息,然後將視頻沿水平方向旋轉(視頻倒過來顯示)每一幀並保存在本地,演示代碼如下圖所示。

逐幀讀取攝像頭視頻文件並保存

程序成功運行,持續獲取視頻信息並保存在本地。我的攝像頭是前置攝像頭,由於本人長的比較嚇人,就不展示了。大家可以在自己的筆記本上試試看。

【總結】

OpenCV是個強大的視覺處理庫,它不僅提供了圖像應用的各種處理算法,對於視頻處理它的功能也是很全面的,在視頻處理中其基本思想還是逐幀獲取圖像並處理相應的圖像內容。因此,在圖像處理功能強大的基礎上構建一系列視頻處理內容,也是得心應手的,感興趣的朋友們對於這個庫的學習,應該不能錯過。歡迎持續關注,後續內容更加精彩哦。

轉載請註明出處,百家號:Python高手養成

相關焦點

  • Python OpenCV使用攝像頭捕獲視頻
    我們知道,OpenCV是一款強大的跨平臺的計算機視覺庫,使用它能完成我們對於圖像和視頻處理的很多功能,今天,我們使用OpenCV來捕獲計算機攝像頭的視頻。OpenCV恰好提供了對於視頻的捕捉、記錄、處理、存儲、傳送等功能。這一系列動作通過cv2.VideoCapture類來實現。它的原理基本上就是通過獲取視頻中的一系列禎來實現對於視頻的各種操作。
  • 基於TensorFlow 、OpenCV 和 Docker 的實時視頻目標檢測
    翻譯 | 於志鵬  徐普     校對 | 陶玉龍     整理 | 孔令雙在本文中,我將介紹如何在 Docker 容器中使用 Tensorflow Object-detection API 來執行實時(網絡攝像頭)和視頻的目標檢測。
  • opencv-python獲取圖像:面向對象與面向過程
    獲取圖像的方式有:1,讀取本地圖片,2,調用筆記本自帶攝像頭或usb攝像頭,3,調用網絡攝像頭。Lena圖像在科研領域流行的原因:1.該圖適度的混合了細節、平滑區域、陰影和紋理,從而能很好的測試各種圖像處理算法。2.Lenna是個美女,對於圖像處理界的研究者(大部分都是男性)來說,美女圖可以有效地吸引他們來做研究。
  • 使用OpenCV和Python構建自己的車輛檢測模型
    utm_source=blog&utm_medium=vehicle-detection-opencv-python)其他目標檢測物品和資源(https://www.analyticsvidhya.com/blog/tag/object-detection/?
  • 如何快速簡單的安裝opencv-python
    :可以在使用pip的時候,加上參數-i和鏡像地址(如https://pypi.tuna.tsinghua.edu.cn/simple),例如:>pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-contrib-python這樣就會從清華鏡像安裝opencv-contrib-python庫。
  • 「python opencv視覺零基礎」十、圖片效果毛玻璃
    一、學習目標了解高斯模糊的使用方法了解毛玻璃的圖片效果添加了解如何自己做一個噪聲圖片目錄「python opencv 計算機視覺零基礎實戰」 第一節「python opencv視覺入門到實戰」二、格式與攝像頭「python opencv 視覺入門到實戰」 三、圖像編輯「python opencv視覺入門到實戰
  • Python中如何利用Opencv打開視頻或圖像並用PyQt控制項顯示
    OpenCV是一個基於BSD許可(開源)發行的跨平臺計算機視覺庫,可以運行在Linux、Windows、Android和Mac OS作業系統上,使用起來十分方便,把它與PyQt結合起來,就可以順利的操作視頻、圖像了。具體安裝請自行百度,這裡介紹使用方法。
  • 用Python做特效,分分鐘碾壓五毛黨
    (1)讀取視頻,獲取每一幀畫面def getFrame(video_name, save_path):""" 讀取視頻將視頻逐幀保存為圖片,並返回視頻的解析度size和幀率fps :param video_name: 視頻的名稱
  • 真沒想到,Python還能實現5毛特效
    另外,我們再來看看另外一種效果,相比之下要狂放許多:實現步驟我們都知道,視頻是由一幀一幀的畫面組成的,每一幀都是一張圖片,我們要實現對視頻的修改就需要對視頻中每一幀畫面進行修改。所以在最開始,我們需要獲取視頻每一幀畫面。在我們獲取幀之後,需要摳取畫面中的人物。
  • 「python opencv視覺零到實戰」八、圖片選區操作
    一、學習目標了解什麼是ROI了解floodFill的使用方法如有錯誤歡迎指出~目錄「python opencv 計算機視覺零基礎實戰」 第一節「python opencv視覺入門到實戰」二、格式與攝像頭「python opencv 視覺入門到實戰」 三、圖像編輯「python opencv視覺入門到實戰
  • 20行Python代碼實現視頻字符化
    ,主要就是將一個視頻轉換成字符的樣子展現出來。 看起來是非常高端,但是實際實現起來確實非常簡單,我們只需要接觸opencv模塊,就能很快的實現視頻字符化。 OpenCV的安裝及圖片讀取 在Python中我們只需要用pip安裝即可,我們在控制臺執行下列語句: pip install opencv-python 安裝完成就可以開始使用
  • 「python opencv視覺零基礎」十四、直方圖反向投影
    前文提醒:博主正在參加博客之星評比,成功入選Top200,現在暫居第九歡迎各位點擊了解更多幫我投票,非常感謝~目錄「python opencv 計算機視覺零基礎實戰」 第一節「python opencv視覺入門到實戰」二、格式與攝像頭「python opencv 視覺入門到實戰」 三、圖像編輯「python
  • 「python opencv計算機視覺零基礎到實戰」九模糊
    一、學習目標了解什麼是卷積了解模糊的使用方法與應用目錄「python opencv 計算機視覺零基礎實戰」 第一節「python opencv視覺入門到實戰」二、格式與攝像頭「python opencv 視覺入門到實戰」 三、圖像編輯「python opencv視覺入門到實戰」 第四節色彩空間
  • 「python opencv視覺零基礎實戰」七邏輯運算應用
    一、學習目標了解opencv中圖像的邏輯運算了解opencv中邏輯運算的應用如有錯誤歡迎指出~目錄「python opencv 計算機視覺零基礎實戰」 第一節「python opencv視覺入門到實戰」二、格式與攝像頭「python opencv 視覺入門到實戰」 三、圖像編輯「python
  • 基於opencv 的圖像處理入門教程
    安裝OpenCV 的安裝還是比較簡單的,直接用 pip 命令在命令行安裝即可,輸入以下命令:pip install opencv-python驗證是否安裝成功,可以運行 python 命令,然後分別輸入以下命令:import cv2
  • OpenCV中的快速直線檢測
    本文介紹該功能的使用方法其輸出結果剖析。本文範例運行環境FastLineDetectors運行必要條件FastLineDetectors屬於opencv-contrib中的模塊,需要安裝opencv-contrib-python。
  • opencv-python圖像預處理-濾波
    為了消除外界環境對圖像採集的幹擾,增強圖像的邊緣及灰度跳變的部分,使圖像變得清晰以及提高圖像處理速度需要對圖像進行預處理操作,主要是對圖像進行濾波和增強操作。使用的方法可以分為空間域處理和頻率域處理兩類。空間域指圖像平面本身,這類圖像處理方法用各種模板直接與圖像進行卷積運算,實現對圖像的處理。
  • 基於OpenCv 和 Python 的手指識別及追蹤
    使用閾值處理和濾波技術來進行背景消除以獲得最佳結果。我在手指識別時遇到的挑戰之一是將手與背景區分開並識別手指的尖端。我將向您展示我用於手指跟蹤的技術,我在此項目中使用了該技術。如果想要查看手指識別和跟蹤的實際操作,請觀看我上傳的視頻。
  • 如何通過 Python 和 OpenCV 實現目標數量監控?
    作者 | 李秋鍵責編 | 劉靜今天我們將利用python+OpenCV實現對視頻中物體數量的監控,達到視頻監控的效果,比如洗煤廠的監控水龍頭的水柱顏色,當水柱為黑色的超過了一半,那麼將說明過濾網發生了故障。
  • 基於python+OpenCV模塊的人臉識別定位技術
    本文將基於OpenCV模塊,在windows作業系統上,利用python語言,進行人臉識別技術的研究。當然OpenCV的應用領域很廣,除了人臉識別之外,它還支持圖像分割、動作識別、視頻處理等技術。首先看一下實現的效果:OpenCV模塊的下載與安裝OpenCV模塊下載安裝很簡單。