欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python OpenCV讀取顯示視頻的方法示例

 更新時(shí)間:2020年02月20日 08:55:06   作者:磐創(chuàng) AI  
這篇文章主要介紹了 Python OpenCV讀取顯示視頻的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

目標(biāo)

  • 學(xué)習(xí)讀取視頻,顯示視頻和保存視頻。
  • 學(xué)習(xí)從相機(jī)捕捉并顯示它。
  • 你將學(xué)習(xí)以下功能:cv.VideoCapture(),cv.VideoWriter()

從相機(jī)中讀取視頻

通常情況下,我們必須用攝像機(jī)捕捉實(shí)時(shí)畫面。提供了一個(gè)非常簡(jiǎn)單的界面。讓我們從攝像頭捕捉一段視頻(我使用的是我筆記本電腦內(nèi)置的網(wǎng)絡(luò)攝像頭) ,將其轉(zhuǎn)換成灰度視頻并顯示出來(lái)。只是一個(gè)簡(jiǎn)單的任務(wù)開(kāi)始。

要捕獲視頻,你需要?jiǎng)?chuàng)建一個(gè) VideoCapture 對(duì)象。它的參數(shù)可以是設(shè)備索引或視頻文件的名稱。設(shè)備索引就是指定哪個(gè)攝像頭的數(shù)字。正常情況下,一個(gè)攝像頭會(huì)被連接(就像我的情況一樣)。所以我簡(jiǎn)單地傳0(或-1)。你可以通過(guò)傳遞1來(lái)選擇第二個(gè)相機(jī),以此類推。在此之后,你可以逐幀捕獲。但是在最后,不要忘記釋放俘虜。

import numpy as np
import cv2 as cv
cap = cv.VideoCapture(0)
if not cap.isOpened():
  print("Cannot open camera")
  exit()
while True:
  # 逐幀捕獲
  ret, frame = cap.read()
  # 如果正確讀取幀,ret為True
  if not ret:
    print("Can't receive frame (stream end?). Exiting ...")
    break
  # 我們?cè)诳蚣苌系牟僮鞯竭@里
  gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
  # 顯示結(jié)果幀e
  cv.imshow('frame', gray)
  if cv.waitKey(1) == ord('q'):
    break
# 完成所有操作后,釋放捕獲器
cap.release()
cv.destroyAllWindows()

cap.read()返回布爾值(True/ False)。如果正確讀取了幀,它將為True。因此,你可以通過(guò)檢查此返回值來(lái)檢查視頻的結(jié)尾。

有時(shí),cap可能尚未初始化捕獲。在這種情況下,此代碼顯示錯(cuò)誤。你可以通過(guò)cap.isOpened()方法檢查它是否已初始化。如果是True,那么確定。否則,使用cap.open()打開(kāi)它。

你還可以使用cap.get(propId)方法訪問(wèn)該視頻的某些功能,其中propId是0到18之間的一個(gè)數(shù)字。每個(gè)數(shù)字表示視頻的屬性(如果適用于該視頻),并且可以顯示完整的詳細(xì)信息在這里看到:cv::VideoCapture::get()。其中一些值可以使用cap.set(propId,value)進(jìn)行修改。value是你想要的新值。

例如,我可以通過(guò)cap.get(cv.CAP_PROP_FRAME_WIDTH)和cap.get(cv.CAP_PROP_FRAME_HEIGHT)檢查框架的寬度和高度。默認(rèn)情況下,它的分辨率為640x480。但我想將其修改為320x240。只需使用和即可。ret = cap.set(cv.CAP_PROP_FRAME_WIDTH,320) and ret = cap.set(cv.CAP_PROP_FRAME_HEIGHT,240).

注意
如果出現(xiàn)錯(cuò)誤,請(qǐng)確保使用任何其他相機(jī)應(yīng)用程序(例如Linux中的Cheese)都可以正常使用相機(jī)。

從文件播放視頻

它與從相機(jī)捕獲相同,只是用視頻文件名更改攝像機(jī)索引。另外,在顯示框架時(shí),請(qǐng)使用適當(dāng)?shù)臅r(shí)間cv.waitKey()。如果太小,則視頻將非常快,而如果太大,則視頻將變得很慢(嗯,這就是顯示慢動(dòng)作的方式)。正常情況下25毫秒就可以了。

import numpy as np
import cv2 as cv
cap = cv.VideoCapture('vtest.avi')
while cap.isOpened():
  ret, frame = cap.read()
  # 如果正確讀取幀,ret為True
  if not ret:
    print("Can't receive frame (stream end?). Exiting ...")
    break
  gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
  cv.imshow('frame', gray)
  if cv.waitKey(1) == ord('q'):
    break
cap.release()
cv.destroyAllWindows()

注意
確保安裝了正確的 ffmpeg 或 gstreamer 版本。有時(shí),使用視頻捕獲(Video Capture)是一件令人頭疼的事情,主要原因是錯(cuò)誤地安裝了 ffmpeg / gstreamer。

保存視頻

所以我們捕捉一個(gè)視頻,一幀一幀地處理,我們想要保存這個(gè)視頻。對(duì)于圖像,它非常簡(jiǎn)單,只需使用 cv.imwrite()。這里還需要做一些工作。

這次我們創(chuàng)建一個(gè) VideoWriter 對(duì)象。我們應(yīng)該指定輸出文件名(例如: output.avi)。然后我們應(yīng)該指定 FourCC 代碼(詳見(jiàn)下一段)。然后傳遞幀率的數(shù)量和幀大小。最后一個(gè)是顏色標(biāo)志。如果為 True,編碼器期望顏色幀,否則它與灰度幀一起工作。

FourCC:http://en.wikipedia.org/wiki/FourCC 是用于指定視頻編解碼器的4字節(jié)代碼。可用代碼列表可在fourcc.org中:http://www.fourcc.org/codecs.php 找到。它取決于平臺(tái)。遵循編解碼器對(duì)我來(lái)說(shuō)效果很好。

在Fedora中:DIVX,XVID,MJPG,X264,WMV1,WMV2。(最好使用XVID。MJPG會(huì)生成大尺寸的視頻。X264會(huì)生成非常小的尺寸的視頻)
在Windows中:DIVX(尚待測(cè)試和添加)
在OSX中:MJPG(.mp4),DIVX(.avi),X264(.mkv)。
FourCC代碼作為MJPG的cv.VideoWriter_fourcc('M','J','P','G')or cv.VideoWriter_fourcc(*'MJPG')傳遞。

在從攝像機(jī)捕獲的代碼下面,沿垂直方向翻轉(zhuǎn)每一幀并保存。

import numpy as np
import cv2 as cv
cap = cv.VideoCapture(0)
# 定義編解碼器并創(chuàng)建VideoWriter對(duì)象
fourcc = cv.VideoWriter_fourcc(*'XVID')
out = cv.VideoWriter('output.avi', fourcc, 20.0, (640, 480))
while cap.isOpened():
  ret, frame = cap.read()
  if not ret:
    print("Can't receive frame (stream end?). Exiting ...")
    break
  frame = cv.flip(frame, 0)
  # 寫翻轉(zhuǎn)的框架
  out.write(frame)
  cv.imshow('frame', frame)
  if cv.waitKey(1) == ord('q'):
    break
# 完成工作后釋放所有內(nèi)容
cap.release()
out.release()
cv.destroyAllWindows()

到此這篇關(guān)于 Python OpenCV讀取顯示視頻的方法示例的文章就介紹到這了,更多相關(guān) Python OpenCV讀取顯示視頻內(nèi)容請(qǐng)搜素腳本之家以前的文章或下面相關(guān)文章,希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決hive中導(dǎo)入text文件遇到的坑

    解決hive中導(dǎo)入text文件遇到的坑

    這篇文章主要介紹了解決hive中導(dǎo)入text文件遇到的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • python requests 庫(kù)請(qǐng)求帶有文件參數(shù)的接口實(shí)例

    python requests 庫(kù)請(qǐng)求帶有文件參數(shù)的接口實(shí)例

    今天小編就為大家分享一篇python requests 庫(kù)請(qǐng)求帶有文件參數(shù)的接口實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • 淺談keras中的batch_dot,dot方法和TensorFlow的matmul

    淺談keras中的batch_dot,dot方法和TensorFlow的matmul

    這篇文章主要介紹了淺談keras中的batch_dot,dot方法和TensorFlow的matmul,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • python基礎(chǔ)教程之縮進(jìn)介紹

    python基礎(chǔ)教程之縮進(jìn)介紹

    這篇文章主要介紹了python基礎(chǔ)教程之縮進(jìn)介紹,本文以if語(yǔ)句為例講解python中的縮進(jìn),需要的朋友可以參考下
    2014-08-08
  • django使用F方法更新一個(gè)對(duì)象多個(gè)對(duì)象字段的實(shí)現(xiàn)

    django使用F方法更新一個(gè)對(duì)象多個(gè)對(duì)象字段的實(shí)現(xiàn)

    這篇文章主要介紹了django使用F方法更新一個(gè)對(duì)象多個(gè)對(duì)象字段的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-03-03
  • PyQt5 文本輸入框自動(dòng)補(bǔ)全QLineEdit的實(shí)現(xiàn)示例

    PyQt5 文本輸入框自動(dòng)補(bǔ)全QLineEdit的實(shí)現(xiàn)示例

    這篇文章主要介紹了PyQt5 文本輸入框自動(dòng)補(bǔ)全QLineEdit的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • python如何爬取個(gè)性簽名

    python如何爬取個(gè)性簽名

    這篇文章主要為大家詳細(xì)介紹了pythonx抓取個(gè)性簽名的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • 詳解python函數(shù)傳參是傳值還是傳引用

    詳解python函數(shù)傳參是傳值還是傳引用

    本篇文章主要介紹了詳解python函數(shù)傳參是傳值還是傳引用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • Python中os模塊的簡(jiǎn)單使用及重命名操作

    Python中os模塊的簡(jiǎn)單使用及重命名操作

    這篇文章主要給大家介紹了關(guān)于Python中os模塊的簡(jiǎn)單使用及重命名操作的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Python閉包及裝飾器運(yùn)行原理解析

    Python閉包及裝飾器運(yùn)行原理解析

    這篇文章主要介紹了python閉包及裝飾器運(yùn)行原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06

最新評(píng)論