最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

目標

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

從相機中讀取視頻

通常情況下,我們必須用攝像機捕捉實時畫面。提供了一個非常簡單的界面。讓我們從攝像頭捕捉一段視頻(我使用的是我筆記本電腦內置的網絡攝像頭) ,將其轉換成灰度視頻并顯示出來。只是一個簡單的任務開始。

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

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
  # 我們在框架上的操作到這里
  gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
  # 顯示結果幀e
  cv.imshow('frame', gray)
  if cv.waitKey(1) == ord('q'):
    break
# 完成所有操作后,釋放捕獲器
cap.release()
cv.destroyAllWindows()

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

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

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

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

注意
如果出現錯誤,請確保使用任何其他相機應用程序(例如Linux中的Cheese)都可以正常使用相機。

從文件播放視頻

它與從相機捕獲相同,只是用視頻文件名更改攝像機索引。另外,在顯示框架時,請使用適當的時間cv.waitKey()。如果太小,則視頻將非???,而如果太大,則視頻將變得很慢(嗯,這就是顯示慢動作的方式)。正常情況下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 版本。有時,使用視頻捕獲(Video Capture)是一件令人頭疼的事情,主要原因是錯誤地安裝了 ffmpeg / gstreamer。

保存視頻

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

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

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

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

在從攝像機捕獲的代碼下面,沿垂直方向翻轉每一幀并保存。

import numpy as np
import cv2 as cv
cap = cv.VideoCapture(0)
# 定義編解碼器并創(chuàng)建VideoWriter對象
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)
  # 寫翻轉的框架
  out.write(frame)
  cv.imshow('frame', frame)
  if cv.waitKey(1) == ord('q'):
    break
# 完成工作后釋放所有內容
cap.release()
out.release()
cv.destroyAllWindows()

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

相關文章

  • win10安裝python的全過程

    win10安裝python的全過程

    這篇文章主要介紹了win10安裝python的全過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Pyhton模塊和包相關知識總結

    Pyhton模塊和包相關知識總結

    文中詳細整理了關于Python模塊和包的相關知識點,剛入門Python的小伙伴們可以學習一下,有助于加深Python基礎的理解.而且有詳細說明及代碼示例,需要的朋友可以參考下
    2021-05-05
  • 分享Python字符串關鍵點

    分享Python字符串關鍵點

    字符串是 Python 中最常用的數據類型。我們可以使用引號來創(chuàng)建字符串,通過本篇文章給大家分享python字符串關鍵點相關資料,感興趣的朋友一起學習吧
    2015-12-12
  • python的set處理二維數組轉一維數組的方法示例

    python的set處理二維數組轉一維數組的方法示例

    這篇文章主要介紹了python的set處理二維數組轉一維數組的方法示例,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • Django框架中方法的訪問和查找

    Django框架中方法的訪問和查找

    這篇文章主要介紹了Django框架中方法的訪問和查找,包括各種列表和字典的查找,是Python的Django框架使用的必備技巧,需要的朋友可以參考下
    2015-07-07
  • Python OpenCV處理圖像之濾鏡和圖像運算

    Python OpenCV處理圖像之濾鏡和圖像運算

    這篇文章主要為大家詳細介紹了Python OpenCV處理圖像之濾鏡和圖像運算,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Python的print函數如何覆蓋打印

    Python的print函數如何覆蓋打印

    這篇文章主要介紹了Python的print函數如何覆蓋打印問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • pandas針對excel處理的實現

    pandas針對excel處理的實現

    這篇文章主要介紹了pandas針對excel處理的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • 利用Python實現自動生成圖文并茂的數據分析

    利用Python實現自動生成圖文并茂的數據分析

    這篇文章主要介紹了利用Python實現自動生成圖文并茂的數據分析,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-08-08
  • python如何實現數組元素兩兩相加

    python如何實現數組元素兩兩相加

    這篇文章主要介紹了python如何實現數組元素兩兩相加,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05

最新評論

沅江市| 岳西县| 隆子县| 崇文区| 德兴市| 肥城市| 晋州市| 临沭县| 金湖县| 舒城县| 银川市| 临沭县| 古蔺县| 鄢陵县| 西峡县| 米泉市| 石河子市| 天镇县| 平潭县| 桐乡市| 革吉县| 乌苏市| 炉霍县| 鄂州市| 荔浦县| 上饶市| 寻甸| 湘乡市| 蒲城县| 宣威市| 望都县| 虎林市| 盐亭县| 静海县| 温州市| 虎林市| 开阳县| 华蓥市| 阿克陶县| 霍邱县| 宜君县|