" />

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

Opencv?視頻讀取與寫入的實現(xiàn)示例

 更新時間:2023年08月21日 08:26:50   作者:缺點靈氣兒  
本文將介紹如何使用OpenCV進行視頻讀寫。通過閱讀本文,您將了解如何讀取視頻文件、處理視頻幀、寫入視頻文件等操作,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言 

視頻是由圖片組成的, 視頻的每一幀就是一幅圖片, 一般是30幀, 表示一秒顯示30張圖片.

  • cv2.VideoCapture可以捕獲攝像頭, 用數(shù)字來表示不同的設(shè)備, 比如0, 1
  • 如果是視頻文件, 可以直接指定路徑即可.

通過路徑獲取視頻內(nèi)容 

獲取視頻內(nèi)容

vc = cv2.VideoCapture(path)

檢查是否正確打開

vc.isOpened()  # 可以讀到內(nèi)容返回True

 循環(huán)播放

播放視頻就是不停的換圖像幀,即循環(huán)調(diào)用  vc.read()    和   cv2.imshow()

完整代碼

import cv2
# 打開視頻文件
def open_video(path):
    vc = cv2.VideoCapture(path)
    ret = vc.isOpened()  # 可以讀到內(nèi)容返回True
    # 檢查是否正確打開
    if ret:
        print("視頻打開成功")
    else:
        print("視頻打開失敗")
        return -1
    print(f"開始播放視頻:  {path.split('/').pop()},按esc鍵退出")
    # 循環(huán)讀幀播放視頻
    while ret:
        # 可以讀到內(nèi)容ret返回True
        ret, frame = vc.read()
        # 讀到最后frame就是空
        if frame is None:
            print("視頻播放完畢")
            break
        if ret:
            cv2.imshow('{}'.format(path).split('/').pop(), frame)
            # 0xFF == 27表示按esc退出鍵會退出
            if cv2.waitKey(33) & 0xFF == 27:
                break
    # 釋放視頻對象
    vc.release()
    # 關(guān)閉窗口
    cv2.destroyAllWindows()
open_video("videos/1.mp4")

從攝像頭讀取視頻數(shù)據(jù)

獲取視頻設(shè)備

cap = cv2.VideoCapture(0)

其他與直接讀取視頻一致

完整實例

import cv2
# 從攝像頭一直讀取數(shù)據(jù)
def camera():
    # 獲取視頻設(shè)備
    cap = cv2.VideoCapture(0)
    print("獲取視頻設(shè)備成功")
    ret = cap.isOpened()
    # 創(chuàng)建窗口
    cv2.namedWindow('video', cv2.WINDOW_NORMAL)
    cv2.resizeWindow('video', 640, 480)
    print("成功創(chuàng)建窗口")
    print("開始播放來自攝像頭的視頻,按esc鍵退出)
    while ret:
        # 從攝像頭讀取視頻
        ret, frame = cap.read()
        # 將視頻幀放在窗口中顯示
        cv2.imshow('video', frame)
        # 等待鍵盤事件, 按esc鍵會退出
        if cv2.waitKey(33) & 0xFF == 27:
            break
    # 釋放攝像頭
    cap.release()
    print("攝像頭已關(guān)閉")
    # 關(guān)閉窗口
    cv2.destroyAllWindows()
camera()

錄制視頻 

VideoWriter : 參數(shù)一為輸出文件, 參數(shù)二為多媒體文件格式(VideoWriter_fourcc),參數(shù)三為幀率, 參數(shù)四為分辨率.

  • write 編碼并寫入緩存
  • release 緩存內(nèi)容寫入磁盤, 并釋放資源

用于創(chuàng)建視頻編解碼器的四字符碼(FourCC)

fourcc = cv2.VideoWriter_fourcc(*'mp4v')  

cv2.VideoWriter()

vm = cv2.VideoWriter('output.mp4', fourcc, 20, (640, 480))

'output.mp4' 是輸出視頻文件的名稱,fourcc 是所選的視頻編碼器,20 是幀率,(640, 480) 是視頻的分辨率。

將視頻幀逐幀寫入視頻文件

vw.write(frame)

完整示例

import cv2
# 錄制視頻
def record_video():
    # 獲取視頻設(shè)備
    cap = cv2.VideoCapture(1)
    print("獲取視頻設(shè)備成功")
    # *mp4v就是解包操作 等同于  'm', 'p', '4', 'v'
    fourcc = cv2.VideoWriter_fourcc(*'mp4v')  # 用于創(chuàng)建視頻編解碼器的四字符碼(FourCC)。
    # (640, 480)表示攝像頭拍視頻, 這個大小搞錯了也不行,主要是這個分辨率.
    vw = cv2.VideoWriter('output.mp4', fourcc, 20, (640, 480))
    # 'output.mp4' 是輸出視頻文件的名稱,fourcc 是所選的視頻編碼器,20 是幀率,(640, 480) 是視頻的分辨率。
    print("開始錄制來自攝像頭的視頻,按esc鍵退出")
    # 循環(huán)存幀錄制視頻
    while cap.isOpened():
        ret, frame = cap.read()
        if not ret:
            print('沒有接收到圖像')
            break
        vw.write(frame)  # 將視頻幀逐幀寫入視頻文件。
        cv2.imshow('frame', frame)  # 顯示錄制的幀
        if cv2.waitKey(33) & 0xFF == 27:
            break
    # 釋放攝像頭
    cap.release()
    print("攝像頭已關(guān)閉")
record_video()

 到此這篇關(guān)于Opencv 視頻讀取與寫入的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)Opencv 視頻讀寫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于C++中sprintf的錯誤總結(jié)詳解

    基于C++中sprintf的錯誤總結(jié)詳解

    本篇文章是對C++中sprintf的錯誤進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C語言遞歸在實踐題目中應(yīng)用詳解

    C語言遞歸在實踐題目中應(yīng)用詳解

    遞歸是C語言中非常重要的知識點,其中的大事化小等思想對初學(xué)C語言的小伙伴來說不是很友好,因此我整理了遞歸的經(jīng)典題目并向外拓展,給你全面的介紹,重新認識遞歸
    2022-05-05
  • C/C++?Qt?運用JSON解析庫的實例代碼

    C/C++?Qt?運用JSON解析庫的實例代碼

    這篇文章主要介紹了C/C++?Qt?運用JSON解析庫的相關(guān)知識,通過代碼依次解析這個json文件中的每一個參數(shù),代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-01-01
  • C++使用nlohmann/json庫解析和處理JSON數(shù)據(jù)的操作指南

    C++使用nlohmann/json庫解析和處理JSON數(shù)據(jù)的操作指南

    本章節(jié)介紹了如何在C++項目中使用nlohmann/json庫來解析和處理JSON數(shù)據(jù),我們將展示如何安裝和配置該庫,并通過封裝的JsonHandler類來簡化JSON數(shù)據(jù)的操作過程,需要的朋友可以參考下
    2025-10-10
  • typedef_struct與struct之間的區(qū)別

    typedef_struct與struct之間的區(qū)別

    本篇文章主要是對typedef struct與struct之間的區(qū)別進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2013-12-12
  • C語言socket編程開發(fā)應(yīng)用示例

    C語言socket編程開發(fā)應(yīng)用示例

    這篇文章主要介紹了C語言socket編程開發(fā)應(yīng)用,示例簡單,大家參考使用吧
    2013-12-12
  • C語言do關(guān)鍵字的具體使用

    C語言do關(guān)鍵字的具體使用

    本篇文章主要介紹了C語言do關(guān)鍵字的具體使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • MinGW-w64 C/C++編譯器下載和安裝的方法步驟(入門教程)

    MinGW-w64 C/C++編譯器下載和安裝的方法步驟(入門教程)

    如果電腦沒有安裝MinGW-w64 C/C++編譯器,就無法運行g(shù)cc命令,本文主要介紹了MinGW-w64 C/C++編譯器下載和安裝的方法步驟,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Qt地圖自適應(yīng)拉伸的實現(xiàn)示例

    Qt地圖自適應(yīng)拉伸的實現(xiàn)示例

    最近需要寫一個程序,要是讓qt到程序自適應(yīng),本文主要介紹了Qt地圖自適應(yīng)拉伸的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • C++中使用cout以hex格式輸出方式

    C++中使用cout以hex格式輸出方式

    這篇文章主要介紹了C++中使用cout以hex格式輸出方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11

最新評論

乐都县| 万荣县| 孝感市| 调兵山市| 澜沧| 泉州市| 漾濞| 大连市| 阳西县| 新竹市| 互助| 团风县| 松桃| 泗洪县| 开封县| 云安县| 夹江县| 健康| 开鲁县| 张北县| 霍城县| 满城县| 佛坪县| 河北区| 汉源县| 六盘水市| 长顺县| 广州市| 静宁县| 西贡区| 应城市| 柳河县| 同心县| 连平县| 阳新县| 响水县| 苏州市| 泸州市| 泰和县| 五常市| 贵德县|