国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python 基于 OpenCV 視覺圖像處理實戰(zhàn) 之 OpenCV 簡單視頻處理實戰(zhàn)案例 之五 簡單指定視頻某片段重復(fù)播放效果

這篇具有很好參考價值的文章主要介紹了Python 基于 OpenCV 視覺圖像處理實戰(zhàn) 之 OpenCV 簡單視頻處理實戰(zhàn)案例 之五 簡單指定視頻某片段重復(fù)播放效果。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Python 基于 OpenCV 視覺圖像處理實戰(zhàn) 之 OpenCV 簡單視頻處理實戰(zhàn)案例 之五 簡單指定視頻某片段重復(fù)播放效果

目錄

Python 基于 OpenCV 視覺圖像處理實戰(zhàn) 之 OpenCV 簡單視頻處理實戰(zhàn)案例 之五 簡單指定視頻某片段重復(fù)播放效果

一、簡單介紹

二、簡單指定視頻某片段重復(fù)播放效果實現(xiàn)原理

三、簡單指定視頻某片段重復(fù)播放效果案例實現(xiàn)簡單步驟

四、注意事項


一、簡單介紹

Python是一種跨平臺的計算機(jī)程序設(shè)計語言。是一種面向?qū)ο蟮膭討B(tài)類型語言,最初被設(shè)計用于編寫自動化腳本(shell),隨著版本的不斷更新和語言新功能的添加,越多被用于獨立的、大型項目的開發(fā)。Python是一種解釋型腳本語言,可以應(yīng)用于以下領(lǐng)域: Web 和 Internet開發(fā)、科學(xué)計算和統(tǒng)計、人工智能、教育、桌面界面開發(fā)、軟件開發(fā)、后端開發(fā)、網(wǎng)絡(luò)爬蟲。

這里使用 Python? 基于 OpenCV 進(jìn)行視覺圖像處理,......

二、簡單指定視頻某片段重復(fù)播放效果實現(xiàn)原理

要在 Python 中使用 OpenCV 指定視頻某段連續(xù)幀,然后重復(fù)播放若干次。當(dāng)指定的起始幀和結(jié)束幀超出視頻的有效范圍時,我們需要進(jìn)行安全校驗,以防止越界訪問。

并將重復(fù)的視頻片段插入原始視頻中,分別處理重復(fù)片段之前和之后的部分,然后再將它們組合起來。

實現(xiàn)原理:

  1. 讀取原始視頻文件。
  2. 分別處理重復(fù)片段之前、重復(fù)片段和重復(fù)片段之后的部分。
  3. 將這些部分按順序合并成新的視頻。

具體方法:

  1. 使用 OpenCV 中的 cv2.VideoCapture() 函數(shù)讀取原始視頻文件。
  2. 獲取原始視頻的幀率、總幀數(shù)和尺寸等信息。
  3. 對指定的重復(fù)片段之前、重復(fù)片段和重復(fù)片段之后的部分進(jìn)行逐幀處理。
  4. 利用 cv2.VideoWriter() 創(chuàng)建輸出視頻文件對象,并按照順序?qū)⑻幚砗玫囊曨l幀寫入其中。

實現(xiàn)中涉及了以下關(guān)鍵函數(shù):

  1. cv2.VideoCapture():用于從視頻文件中讀取視頻幀的函數(shù)。它創(chuàng)建了一個視頻捕獲對象,可以用來逐幀讀取視頻內(nèi)容。

  2. cv2.VideoWriter():用于創(chuàng)建視頻寫入對象的函數(shù)。它創(chuàng)建了一個視頻寫入對象,可以用來將視頻幀寫入到輸出視頻文件中。

  3. cap.set(cv2.CAP_PROP_POS_FRAMES, frame_index):用于設(shè)置視頻文件讀取的起始幀。這個函數(shù)可以將視頻文件的讀取位置設(shè)置為指定的幀序號。

  4. cap.get(cv2.CAP_PROP_FPS):用于獲取視頻幀率的函數(shù)。它返回視頻文件中的幀率信息,以便在創(chuàng)建輸出視頻對象時保持一致。

  5. cap.get(cv2.CAP_PROP_FRAME_COUNT):用于獲取視頻總幀數(shù)的函數(shù)。它返回視頻文件中的總幀數(shù)信息,以便在處理視頻片段時進(jìn)行判斷。

  6. cap.read():用于逐幀讀取視頻內(nèi)容的函數(shù)。它返回一個布爾值和一個視頻幀,布爾值表示是否成功讀取了視頻幀,視頻幀則是一個 NumPy 數(shù)組,表示當(dāng)前讀取的視頻幀內(nèi)容。

  7. out.write(frame):用于將視頻幀寫入輸出視頻文件的函數(shù)。它將指定的視頻幀寫入到輸出視頻對象中。

  8. cap.release()out.release():分別用于釋放視頻捕獲對象和視頻寫入對象的函數(shù)。它們釋放了底層的資源,確保在程序結(jié)束時資源得到正確釋放。

通過這些關(guān)鍵函數(shù)的組合和調(diào)用,實現(xiàn)了從原始視頻中提取指定片段、重復(fù)播放指定次數(shù),并生成新的視頻文件的功能。

三、簡單指定視頻某片段重復(fù)播放效果案例實現(xiàn)簡單步驟

1、編寫代碼

Python 基于 OpenCV 視覺圖像處理實戰(zhàn) 之 OpenCV 簡單視頻處理實戰(zhàn)案例 之五 簡單指定視頻某片段重復(fù)播放效果,Python? 基于 OpenCV 視覺圖像處理實戰(zhàn),python,opencv,圖像處理,視頻重復(fù)播放,視頻處理

2、運(yùn)行效果

Python 基于 OpenCV 視覺圖像處理實戰(zhàn) 之 OpenCV 簡單視頻處理實戰(zhàn)案例 之五 簡單指定視頻某片段重復(fù)播放效果,Python? 基于 OpenCV 視覺圖像處理實戰(zhàn),python,opencv,圖像處理,視頻重復(fù)播放,視頻處理

3、具體代碼文章來源地址http://www.zghlxwxcb.cn/news/detail-849269.html

"""
簡單指定視頻某片段重復(fù)播放效果
    1、使用 OpenCV 中的 cv2.VideoCapture() 函數(shù)讀取原始視頻文件。
    2、獲取原始視頻的幀率、總幀數(shù)和尺寸等信息。
    3、對指定的重復(fù)片段之前、重復(fù)片段和重復(fù)片段之后的部分進(jìn)行逐幀處理。
    4、利用 cv2.VideoWriter() 創(chuàng)建輸出視頻文件對象,并按照順序?qū)⑻幚砗玫囊曨l幀寫入其中。
"""

import cv2


def repeat_video_segment(input_video_path, output_video_path, start_frame, end_frame, repeat_count):
    """
    指定視頻片段重復(fù)若干次
    :param input_video_path:
    :param output_video_path:
    :param start_frame:
    :param end_frame:
    :param repeat_count:
    :return:
    """
    # 讀取原始視頻文件
    cap = cv2.VideoCapture(input_video_path)

    # 獲取原始視頻的幀率和總幀數(shù)
    fps = cap.get(cv2.CAP_PROP_FPS)
    total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))

    # 校驗起始幀和結(jié)束幀是否有效
    if start_frame < 0 or end_frame < 0 or start_frame >= total_frames or end_frame >= total_frames:
        print("Error: Invalid start or end frame.")
        return

    # 獲取原始視頻的寬度和高度
    width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
    height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))

    # 定義視頻編碼器
    fourcc = cv2.VideoWriter_fourcc(*'mp4v')

    # 創(chuàng)建輸出視頻文件對象
    out = cv2.VideoWriter(output_video_path, fourcc, fps, (width, height))

    # 設(shè)置視頻文件讀取的起始幀
    cap.set(cv2.CAP_PROP_POS_FRAMES, 0)

    # 寫入重復(fù)片段之前的部分
    for frame_index in range(start_frame):
        ret, frame = cap.read()
        if ret:
            out.write(frame)
        else:
            break

    # 寫入重復(fù)片段
    for _ in range(repeat_count):
        # 設(shè)置視頻文件讀取的起始幀為重復(fù)片段的起始幀
        cap.set(cv2.CAP_PROP_POS_FRAMES, start_frame)

        # 逐幀讀取重復(fù)片段并寫入輸出視頻對象
        for frame_index in range(start_frame, end_frame + 1):
            ret, frame = cap.read()
            if ret:
                out.write(frame)
            else:
                break

    # 寫入重復(fù)片段之后的部分
    for frame_index in range(end_frame + 1, total_frames):
        cap.set(cv2.CAP_PROP_POS_FRAMES, frame_index)
        ret, frame = cap.read()
        if ret:
            out.write(frame)
        else:
            break

    # 釋放資源
    cap.release()
    out.release()
    cv2.destroyAllWindows()


def main():
    # 調(diào)用函數(shù)并指定輸入和輸出視頻文件路徑,以及要重復(fù)播放的視頻段的起始幀和結(jié)束幀,以及重復(fù)播放的次數(shù)
    input_video_path = "Videos/CatRun.mp4"
    output_video_path = "Videos/VideoRepeatSegment.mp4"
    start_frame = 130  # 重復(fù)片段的起始幀
    end_frame = 200  # 重復(fù)片段的結(jié)束幀
    repeat_count = 3  # 重復(fù)播放的次數(shù)
    repeat_video_segment(input_video_path, output_video_path, start_frame, end_frame, repeat_count)


if __name__ == "__main__":
    main()

四、注意事項

  1. 校驗起始幀和結(jié)束幀是否有效,確保不會越界。
  2. 在處理視頻片段之前和之后,需要設(shè)置視頻文件讀取的起始幀。
  3. 在循環(huán)讀取視頻幀時,需要判斷視頻文件是否讀取到了末尾。
  4. 最后需要釋放資源,包括釋放視頻文件對象和關(guān)閉所有窗口。

到了這里,關(guān)于Python 基于 OpenCV 視覺圖像處理實戰(zhàn) 之 OpenCV 簡單視頻處理實戰(zhàn)案例 之五 簡單指定視頻某片段重復(fù)播放效果的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包