1. 程式人生 > >openCV-Python筆記二:視訊捕獲

openCV-Python筆記二:視訊捕獲

一、從攝像頭捕獲視訊

從攝像頭捕獲視訊,首先需要建立VideoCapture物件,引數為裝置索引號,例如:對於膝上型電腦,傳0表示使用其內建攝像頭。

import numpy as np 
import cv2
cap = cv2.VideoCapture(0)
while(cap.isOpened()):
    # 從攝像頭讀取一幀,ret是表明成功與否
    ret, frame = cap.read() 
    if ret:
        #處理得到的幀,這裡將其翻轉
        frame = cv2.flip(frame,0)
        cv2.imshow('frame'
,frame) else: break # 監聽鍵盤,按下q鍵退出 if cv2.waitKey(1) & 0xFF == ord('q'): break ##釋放 cap.release() cv2.destroyAllWindows()

可以使用函式 cap.get(propId) 來獲得視訊的一些引數資訊。這裡 propId 可以是 0 到 18 之間的任何整數。每一個數代表視訊的一個屬性,其中的一些值可以使用 cap.set(propId,value) 來修改,value 就是 你想要設定成的新值。

例如,可以使用 cap.get(3) 和 cap.get(4) 來檢視每一幀的寬和高。 預設情況下得到的值是 640X480。但是可以使用 cap.set(3,320) 和 cap.set(4,240) 來把寬和高改成 320X240。

propId為以下值:

  • CV_CAP_PROP_POS_MSEC Current position of the video file in milliseconds.
  • CV_CAP_PROP_POS_FRAMES 0-based index of the frame to be decoded/captured next.
  • CV_CAP_PROP_POS_AVI_RATIO Relative position of the video file: 0 - start of the film, 1 - end of the film.
  • CV_CAP_PROP_FRAME_WIDTH Width of the frames in the video stream.
  • CV_CAP_PROP_FRAME_HEIGHT Height of the frames in the video stream.
  • CV_CAP_PROP_FPS Frame rate.
  • CV_CAP_PROP_FOURCC 4-character code of codec.
  • CV_CAP_PROP_FRAME_COUNT Number of frames in the video file.
  • CV_CAP_PROP_FORMAT Format of the Mat objects returned by retrieve() .
  • CV_CAP_PROP_MODE Backend-specific value indicating the current capture mode.
  • CV_CAP_PROP_BRIGHTNESS Brightness of the image (only for cameras).
  • CV_CAP_PROP_CONTRAST Contrast of the image (only for cameras).
  • CV_CAP_PROP_SATURATION Saturation of the image (only for cameras).
  • CV_CAP_PROP_HUE Hue of the image (only for cameras).
  • CV_CAP_PROP_GAIN Gain of the image (only for cameras).
  • CV_CAP_PROP_EXPOSURE Exposure (only for cameras).
  • CV_CAP_PROP_CONVERT_RGB Boolean flags indicating whether images should be converted to RGB.
  • CV_CAP_PROP_WHITE_BALANCE Currently unsupported
  • CV_CAP_PROP_RECTIFICATION Rectification flag for stereo cameras (note: only supported by DC1394 v 2.x backend cur- rently)

二、儲存從攝像頭捕獲的視訊

儲存視訊,首先需要建立一個VideoWriter物件,它的引數依次為視訊檔名,視訊編碼格式,幀率,大小,是否彩色。

FourCC 碼以下面的格式傳給程式,以XVID 為例:

cv2.cv.CV_FOURCC(‘X’,’V’,’I’,’D’) 或者cv2.cv.CV_FOURCC(*’XVID’)。

import numpy as np 
import cv2
cap = cv2.VideoCapture(0)
#視訊編碼格式
fourcc = cv2.cv.CV_FOURCC(*'XVID')
#VideoWriter物件
out = cv2.VideoWriter('cam.avi',fourcc,20.0,(640,480))
while(cap.isOpened()):
    # 從攝像頭讀取一幀,ret是表明成功與否
    ret, frame = cap.read() 
    if ret:
        #處理得到的幀,然後儲存
        frame = cv2.flip(frame,0)
        out.write(frame)
        cv2.imshow('frame',frame)
    else:
        break
    # 監聽鍵盤,按下q鍵退出
    if cv2.waitKey(1) & 0xFF == ord('q'): 
        break 
##釋放
cap.release()
out.release()
cv2.destroyAllWindows()

三、讀取視訊檔案

與從攝像頭中捕獲一樣,只需要把裝置索引號改成視訊檔案的名字。在播放每一幀時,使用cv2.waiKey() 設定適當的持續時間。如果設定的太低視訊就會播放的非常快,如果設定的太高就會播放的很慢(可以使用這種方法控制視訊的播放速度)。

如果獲取失敗的話,可能是因為缺少ffmpeg的dll,可以把opencv資料夾中的 \3rdparty\ffmpeg裡的opecv_ffmpeg.dll檔案(64位系統下是opecv_ffmpeg_64.dll)複製到python資料夾目錄(我的是C:\python27)下,同時重新命名為opecv_ffmpegXXX.dll,XXX為opencv版本,我使用的2.4.13則重新命名為opecv_ffmpeg2413.dll

import numpy as np 
import cv2
cap = cv2.VideoCapture('1.avi')
while(cap.isOpened()):
    # 從攝像頭讀取一幀,ret是表明成功與否
    ret, frame = cap.read() 
    if ret:
        #處理得到的幀,這裡將其翻轉
        frame = cv2.flip(frame,0)
        cv2.imshow('frame',frame)
    else:
        break
    # 監聽鍵盤,按下q鍵退出
    if cv2.waitKey(25) & 0xFF == ord('q'): 
        break 
##釋放
cap.release()
cv2.destroyAllWindows()

相關推薦

openCV-Python筆記視訊捕獲

一、從攝像頭捕獲視訊 從攝像頭捕獲視訊,首先需要建立VideoCapture物件,引數為裝置索引號,例如:對於膝上型電腦,傳0表示使用其內建攝像頭。 import numpy as np import cv2 cap = cv2.VideoCapt

openCV-Python筆記影象的讀取、顯示和儲存

使用cv2.imread(),cv2.imshow(),cv2.imwrite()讀取、顯示和儲存影象 一、讀入影象 使用函式cv2.imread(filepath,flags)讀入一副圖片 filepath:要讀入圖片的完整路徑flags:讀入圖片的標誌 cv2.I

Python基礎教程筆記運算符

.com 筆記 false 一個 二進制格式 UNC style AR 語言 Python算術運算符 實例: a = 21 b = 10 c = 0 c = a + b print(c) #31 c = a - b print(c)

python學習筆記列表

列表通過索引讀取資料: #索引讀取資料 a = [1,2,3] a[-1] 執行結果:3 列表支援巢狀: b = [[1,2,3],[4,5,6]] print(b) 執行結果:[[1, 2, 3], [4, 5, 6]] 列表可以修改: b = [[1,2,3],[4,5,

python爬蟲學習筆記Requests庫詳解及HTTP協議

Requests庫的安裝:https://mp.csdn.net/postedit/83715574 r=requests.get(url,params=None,**kwargs) 這個r是Response物件 url :擬獲取頁面的url連結 params:url中的額外引數

Python+opencv學習筆記之人臉視訊採集及實時檢測(樹莓派3B+下檢測)

實驗目標: 1.首先通過opencv程式設計寫一個可以呼叫攝像頭並且能將攝像頭捕捉到的內容進行儲存。 2.將視訊檔案傳送到我們的樹莓派上,然後再利用Python編寫程式對視訊進行人臉識別處理,最後將人臉識別後的視訊儲存。 3.對某一張圖片進行處理,讓其具有毛玻璃效果,並將處理後的圖片儲存。

opencv學習筆記十九SIFT特徵點檢測與匹配

SIFT(Scale-invariant feature transform)是一種檢測區域性特徵的演算法,該演算法通過求一幅圖中的特徵點(interest points,or corner points)及其有關scale 和 orientation 的描述子得到特徵並進行

Python學習筆記Python基礎

Python語法採用縮排形式,有以下幾點需要注意: 註釋以#開頭; 當語句以冒號:結尾時,縮排的語句視為程式碼塊; 始終堅持4個空格的縮排; 大小寫敏感; 1. 資料型別和變數 1.1 資料型別 1.1.1 整數 在程式中的寫法和數學中的寫法一樣

Caffe學習筆記()使用Python生成caffe所需的lmdb檔案和txt列表清單檔案

轉載請註明作者和出處: http://blog.csdn.net/c406495762 Python版本:Python2.7 執行平臺:Ubuntu14.04 最後修改時間:2017.4.20     在上個筆記中,已經學會了如何使用Caffe利用作者

opencv學習筆記(九)捕獲攝像頭的視訊並儲存成avi格式

        這個程式引用自下面的部落格,但是執行之後我發現視訊儲存之後,要利用前面提到的opencv播放視訊程式播放,不能用普通播放器播放——而且用前面的opencv程式播放時,影象是倒置的,需要我們在程式裡面改一下。在while(1)裡面加上一句     cvFlip

python資料分析與挖掘實戰筆記第99頁神經網路訓練出現的錯誤'Some keys in session_kwargs are not supported at this time: %s'

在使用神經網路模型預測銷量高低時,系統指出模型訓練時出現錯誤: ValueError Traceback (most recent call last) <ipython-input-20-e46e29b76a5e> in <module&g

Python 爬蟲學習筆記 xpath 模組

Python 爬蟲學習筆記二: xpath from lxml 首先應該知道的是xpath 只是一個元素選擇器, 在python 的另外一個庫lxml 中, 想要使用xpath 必須首先下載lxml 庫 lxml 庫的安裝: 很簡單, 具體請檢視 http:

WSWP(用python寫爬蟲)筆記實現連結獲取和資料儲存爬蟲

前面已經構建了一個獲取連結的爬蟲模組,現在繼續完善這個爬蟲。 分析網頁 要對一個網頁中的資料進行提取,需要先對網頁的結構有一個大體的瞭解,通過在瀏覽器檢視網頁原始碼的方法就能實現。 在瞭解到網頁的結構後,接下來便是獲取自己想要的資料了,個人比較喜歡用C

kfka學習筆記使用Python操作Kafka

1、準備工作 使用python操作kafka目前比較常用的庫是kafka-python庫,但是在安裝這個庫的時候需要依賴setuptools庫和six庫,下面就要分別來下載這幾個庫 1、下載setuptools 開啟這個網址會彈出類似下面的額下載視窗,選擇儲存檔案,點選確定

Thinkphp5筆記創建模塊

pps dir turn 環境 本地 blog star fine window 系統:window 7 64位 Thinkphp版本:5.0.5 環境:wampserver集成 我的項目是部署在本地www/thinkphp 目錄下。在做之前,先要考慮清楚,你需要幾個

筆記ansible批量設置主機名

ansible改名批量設置主機名系統環境:debian 8本機ip :180.76.169.6被管理機:218.60.33.2 、218.60.33.3、218.60.33.4、218.60.33.5更新時間: 2017-2-271. 在/etc/ansible/hosts配置主機信息(主機名需先在hos

SpringMVC學習筆記常用註解

title c學習 請求 pin 學習 lin att 詳解 stp 轉載請註明原文地址:http://www.cnblogs.com/ygj0930/p/6831976.html 一、用於定義類的註解:@Controller @Controller 用於標記在一個類上,

STM32學習及應用筆記一次運算符優先級造成的錯誤

位與 指向 cells 偏移 getchar() 取地址 大於 沒有 事情 本人在最近一個項目的開發中,出現一個應為疏忽運算符優先級造成的問題,檢查了很久才發現問題,所以覺得運算符的優先級問題還是有必要再研究一下。具體的問題是這樣的,我采集了傳感器的原始數據,然後會

framework7學習筆記基礎知識

部分 cnblogs query 基礎 logs code 自己 $$ pan 一:DOM7 framework7有自己的 DOM7 - 一個集成了大部分常用DOM操作的高性能庫。它的用法和jQuery幾乎是一樣的,包括大部分常用的方法和jquery風格的鏈式調用。 在開發

python筆記04字典

username 說明符 坐標 修改時間 keys 設定 live bar 說明 4.1 字典的使用 字典:通過名字來引用值的數據結構,又稱為映射 字典中的值並沒有特殊的順序,但是都存儲在一個特定的鍵下 字典提供的功能:快速查找特定鍵值對應關系 某些情況下,字典比列表更