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

巧妙使用python?opencv庫玩轉(zhuǎn)視頻幀率

 更新時(shí)間:2022年04月26日 12:09:28   作者:愛python的王三金  
這篇文章主要介紹了巧妙使用python?opencv庫玩轉(zhuǎn)視頻幀率的教程示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

需求背景

在很多時(shí)候我們需要抽取視頻的某一幀做一些分析或修改等;比如筆者需求就是判斷一個人在該視頻中出現(xiàn)的頻率,以判斷他是否是這段視頻的主角;

關(guān)于opencv

OpenCV 是 Intel 開源計(jì)算機(jī)視覺庫 (Computer Version) 。它由一系列 C 函數(shù)和少量 C++ 類構(gòu)成,實(shí)現(xiàn)了圖像處理和計(jì)算機(jī)視覺方面的很多通用算法。

OpenCV 擁有包括 300 多個 C 函數(shù)的跨平臺的中、高層 API 。它不依賴于其它的外部庫 —— 盡管也可以使用某些外部庫。 OpenCV 對非商業(yè)應(yīng)用和商業(yè)應(yīng)用都是免費(fèi) 的

。同時(shí) OpenCV 提供了對硬件的訪問,可以直接訪問攝像頭,并且 opencv 還提供了一個簡單的 GUI(graphics user interface) 系統(tǒng) :highgui 。 我們就通過 OpenCV 提供的一些方法來構(gòu)造出這個人臉檢測 ( face detection ) 程序來。

安裝opencv

pip install opencv-python

用opencv按一定間隔截取視頻幀,并保存為圖片。

這個例子使用python編程:

代碼:

# -*- coding:utf8 -*-
import cv2
import os
import shutil
def VideoExtract(filename, count=600):
    '''
    :param filename: 視頻文件路徑
    :param count: 保存圖片的幀率間隔
    :return:
    '''
    # 保存圖片的路徑
    savedpath = filename.split('.')[0] + '/'
    isExists = os.path.exists(savedpath)
    if not isExists:
        os.makedirs(savedpath)
        print('path of %s is build' % (savedpath))
    else:
        shutil.rmtree(savedpath)
        os.makedirs(savedpath)
        print('path of %s already exist and rebuild' % (savedpath))
    # 開始讀視頻
    videoCapture = cv2.VideoCapture(filename)
    i = 0
    j = 0
    while True:
        success, frame = videoCapture.read()
        i += 1
        if (i % count == 0):
            # 保存圖片
            j += 1
            savedname = filename.split('.')[0] + '_' + str(j) + '_' + str(i) + '.jpg'
            cv2.imwrite(savedpath + savedname, frame)
            print('image of %s is saved' % (savedname))
        if not success:
            break

運(yùn)行完成后在生成的圖片文件夾中會寫入很多圖片,也就是我們剛剛每個count幀抽出的畫面

根據(jù)這個抽幀情況來看該視頻主角應(yīng)該就是TRUMP了;

抽幀之前當(dāng)然要做一些視頻屬性的判斷,如視頻時(shí)長、視頻大小等

cap = cv2.VideoCapture(video_name)
# 幀率
fps = int(round(cap.get(cv2.CAP_PROP_FPS)))
# 分辨率-寬度
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
# 分辨率-高度
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
# 總幀數(shù)
frame_counter = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
cap.release()
cv2.destroyAllWindows()
# 時(shí)長,單位s
duration = frame_counter / fps

opencv-python獲取視頻相關(guān)信息

以下是opencv-python可以獲取視頻的相關(guān)信息,可以通過從0開始的序號獲取

CV_CAP_PROP_POS_MSEC 視頻文件的當(dāng)前位置(以毫秒為單位)或視頻捕獲時(shí)間戳。

CV_CAP_PROP_POS_FRAMES 接下來要解碼/捕獲的幀的基于0的索引。

CV_CAP_PROP_POS_AVI_RATIO 視頻文件的相對位置:0 - 電影的開始,1 - 電影的結(jié)尾。

CV_CAP_PROP_FRAME_WIDTH 視頻流中幀的寬度。

CV_CAP_PROP_FRAME_HEIGHT 視頻流中幀的高度。

CV_CAP_PROP_FPS 幀速率。

CV_CAP_PROP_FOURCC 編解碼器的4字符代碼。

CV_CAP_PROP_FRAME_COUNT 視頻文件中的幀數(shù)。

CV_CAP_PROP_FORMAT 返回的Mat對象的格式 retrieve() 。

CV_CAP_PROP_MODE 指示當(dāng)前捕獲模式的特定于后端的值。

CV_CAP_PROP_BRIGHTNESS 圖像的亮度(僅適用于相機(jī))。

CV_CAP_PROP_CONTRAST 圖像對比度(僅適用于相機(jī))。

CV_CAP_PROP_SATURATION 圖像的飽和度(僅適用于相機(jī))。

CV_CAP_PROP_HUE 圖像的色調(diào)(僅適用于相機(jī))。

CV_CAP_PROP_GAIN 圖像的增益(僅適用于相機(jī))。

CV_CAP_PROP_EXPOSURE 曝光(僅適用于相機(jī))。

CV_CAP_PROP_CONVERT_RGB 布爾標(biāo)志,指示是否應(yīng)將圖像轉(zhuǎn)換為RGB。

CV_CAP_PROP_WHITE_BALANCE_U 白平衡設(shè)置的U值(注意:目前僅支持DC1394 v 2.x后端)

CV_CAP_PROP_WHITE_BALANCE_V 白平衡設(shè)置的V值(注意:目前僅支持DC1394 v 2.x后端)

CV_CAP_PROP_RECTIFICATION 立體攝像機(jī)的整流標(biāo)志(注意:目前僅支持DC1394 v 2.x后端)

CV_CAP_PROP_ISO_SPEED攝像機(jī) 的ISO速度(注意:目前僅支持DC1394 v 2.x后端)

CV_CAP_PROP_BUFFERSIZE 存儲在內(nèi)部緩沖存儲器中的幀數(shù)(注意:目前僅支持DC1394 v 2.x后端)

以上就是巧妙使用python opencv庫玩轉(zhuǎn)視頻幀率的詳細(xì)內(nèi)容,更多關(guān)于python opencv庫玩轉(zhuǎn)視頻幀率的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • LyScript實(shí)現(xiàn)Hook隱藏調(diào)試器的方法詳解

    LyScript實(shí)現(xiàn)Hook隱藏調(diào)試器的方法詳解

    LyScript?插件集成的內(nèi)置API函數(shù)可靈活的實(shí)現(xiàn)繞過各類反調(diào)試保護(hù)機(jī)制。本文將運(yùn)用LyScript實(shí)現(xiàn)繞過大多數(shù)通用調(diào)試機(jī)制,實(shí)現(xiàn)隱藏調(diào)試器的目的,需要的可以參考一下
    2022-09-09
  • 代碼詳解Python的函數(shù)基礎(chǔ)(1)

    代碼詳解Python的函數(shù)基礎(chǔ)(1)

    這篇文章主要為大家詳細(xì)介紹了Python的函數(shù)基礎(chǔ),使用了函數(shù)調(diào)用和函數(shù)定義,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • python定時(shí)任務(wù)timeloop庫用法實(shí)例詳解

    python定時(shí)任務(wù)timeloop庫用法實(shí)例詳解

    有些時(shí)候我們需要每隔一段時(shí)間就要執(zhí)行一段程序,或者是往復(fù)循環(huán)執(zhí)行某一個任務(wù),下面這篇文章主要給大家介紹了關(guān)于python定時(shí)任務(wù)timeloop庫用法的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • Python實(shí)現(xiàn)Telnet自動連接檢測密碼的示例

    Python實(shí)現(xiàn)Telnet自動連接檢測密碼的示例

    這篇文章主要介紹了Python實(shí)現(xiàn)Telnet自動連接檢測密碼的示例,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-04-04
  • Python實(shí)現(xiàn)提取和去除數(shù)據(jù)中包含關(guān)鍵詞的行

    Python實(shí)現(xiàn)提取和去除數(shù)據(jù)中包含關(guān)鍵詞的行

    這篇文章主要介紹了Python如何提取數(shù)據(jù)中包含關(guān)鍵詞的行已經(jīng)如何去除數(shù)據(jù)中包含關(guān)鍵詞的行,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2023-08-08
  • python決策樹之CART分類回歸樹詳解

    python決策樹之CART分類回歸樹詳解

    這篇文章主要為大家詳細(xì)介紹了python決策樹之CART分類回歸樹,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Python實(shí)現(xiàn)的爬蟲功能代碼

    Python實(shí)現(xiàn)的爬蟲功能代碼

    這篇文章主要介紹了Python實(shí)現(xiàn)的爬蟲功能,涉及Python使用urllib2、BeautifulSoup模塊實(shí)現(xiàn)網(wǎng)頁源碼的獲取、解析等相關(guān)操作技巧,需要的朋友可以參考下
    2017-06-06
  • Django框架實(shí)現(xiàn)的普通登錄案例【使用POST方法】

    Django框架實(shí)現(xiàn)的普通登錄案例【使用POST方法】

    這篇文章主要介紹了Django框架實(shí)現(xiàn)的普通登錄案例,結(jié)合實(shí)例形式分析了Django框架使用POST方法進(jìn)行頁面登錄、校驗(yàn)等相關(guān)操作技巧,需要的朋友可以參考下
    2019-05-05
  • 書單|人生苦短,你還不用python!

    書單|人生苦短,你還不用python!

    Python 誕生之初就被譽(yù)為最容易上手的編程語言。進(jìn)入火熱的 AI 人工智能時(shí)代后,它也逐漸取代 Java,成為編程界的頭牌語言。下面這篇文章主要給大家總結(jié)介紹了一些關(guān)于python的書單,需要的朋友可以參考下。
    2017-12-12
  • Python標(biāo)準(zhǔn)庫:內(nèi)置函數(shù)max(iterable, *[, key, default])說明

    Python標(biāo)準(zhǔn)庫:內(nèi)置函數(shù)max(iterable, *[, key, default])說明

    這篇文章主要介紹了Python標(biāo)準(zhǔn)庫:內(nèi)置函數(shù)max(iterable, *[, key, default])說明,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04

最新評論