日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python实现视频关键帧提取(基于帧间差分)

發(fā)布時間:2024/7/23 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python实现视频关键帧提取(基于帧间差分) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

python實現(xiàn)視頻關鍵幀提取(基于幀間差分)

在很多場景下,我們不想或者不能處理視頻的每一幀圖片,這時我們希望能夠從視頻中提取出一些重要的幀進行處理,這個過程我們稱為視頻關鍵幀提取。

關鍵幀提取算法多種多樣,如何實現(xiàn)主要取決于你對于關鍵幀的定義。

也就是說,對于你的實際應用場景,視頻中什么樣的圖片才算是一個關鍵幀?

今天我實現(xiàn)了一種比較通用的關鍵幀提取算法,它基于幀間差分。

算法的原理很簡單:我們知道,將兩幀圖像進行差分,得到圖像的平均像素強度可以用來衡量兩幀圖像的變化大小。因此,基于幀間差分的平均強度,每當視頻中的某一幀與前一幀畫面內(nèi)容產(chǎn)生了大的變化,我們便認為它是關鍵幀,并將其提取出來。

算法的流程簡述如下:

首先,我們讀取視頻,并依次計算每兩幀之間的幀間差分,進而得到平均幀間差分強度。

然后,我們可以選擇如下的三種方法的一種來提取關鍵幀,它們都是基于幀間差分的:

  • 使用差分強度的順序

    我們對所有幀按照平均幀間差分強度進行排序,選擇平均幀間差分強度最高的若干張圖片作為視頻的關鍵幀。

  • 使用差分強度閾值

    我們選擇平均幀間差分強度高于預設閾值的幀作為視頻的關鍵幀。

  • 使用局部最大值

    我們選擇具有平均幀間差分強度局部最大值的幀作為視頻的關鍵幀。

    這種方法的提取結果在豐富度上表現(xiàn)更好一些,提取結果均勻分散在視頻中。

    需要注意的是,使用這種方法時,對平均幀間差分強度時間序列進行平滑是很有效的技巧。它可以有效的移除噪聲來避免將相似場景下的若干幀均同時提取為關鍵幀。

  • 這里比較推薦使用第三種方法來提取視頻的關鍵幀

    獲取源碼點這里

    最初的代碼來自于這里, 但是其代碼本身有些問題,在讀取超過100M的視頻時程序會出現(xiàn)內(nèi)存溢出的錯誤,因此我對其進行了優(yōu)化,減去了不必要的內(nèi)存消耗。

    在精靈寶可夢的一個經(jīng)典片段中進行了實驗,平滑后的平均幀間差分強度如下圖所示:

    提取的部分關鍵幀如下所示:

    效果還不錯吧~

    我這里僅僅是對視頻關鍵幀提取的方法進行了簡單的探索,最終得到的效果也滿足了我實際工作的需要。如果您對視頻關鍵幀提取領域很了解,或者了解其他更好的方法,期待與您交流~

    最后,對算法感興趣的小伙伴,歡迎關注我的github項目AI-Toolbox。

    此項目旨在提高效率,快速迭代新想法,歡迎貢獻代碼~

    總結

    以上是生活随笔為你收集整理的python实现视频关键帧提取(基于帧间差分)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。