Python OpenCV對(duì)本地視頻文件進(jìn)行分幀保存的實(shí)例
如下所示:
# coding=utf-8
import os
import cv2
videos_src_path = "/home/wgp/視頻/"
video_formats = [".MP4", ".MOV"]
frames_save_path = "/home/wgp/視頻/"
width = 320
height = 240
time_interval = 50
def video2frame(video_src_path, formats, frame_save_path, frame_width, frame_height, interval):
"""
將視頻按固定間隔讀取寫(xiě)入圖片
:param video_src_path: 視頻存放路徑
:param formats: 包含的所有視頻格式
:param frame_save_path: 保存路徑
:param frame_width: 保存幀寬
:param frame_height: 保存幀高
:param interval: 保存幀間隔
:return: 幀圖片
"""
videos = os.listdir(video_src_path)
def filter_format(x, all_formats):
if x[-4:] in all_formats:
return True
else:
return False
videos = filter(lambda x: filter_format(x, formats), videos)
for each_video in videos:
print "正在讀取視頻:", each_video
each_video_name = each_video[:-4]
os.mkdir(frame_save_path + each_video_name)
each_video_save_full_path = os.path.join(frame_save_path, each_video_name) + "/"
each_video_full_path = os.path.join(video_src_path, each_video)
cap = cv2.VideoCapture(each_video_full_path)
frame_index = 0
frame_count = 0
if cap.isOpened():
success = True
else:
success = False
print("讀取失敗!")
while(success):
success, frame = cap.read()
print "---> 正在讀取第%d幀:" % frame_index, success
if frame_index % interval == 0:
resize_frame = cv2.resize(frame, (frame_width, frame_height), interpolation=cv2.INTER_AREA)
# cv2.imwrite(each_video_save_full_path + each_video_name + "_%d.jpg" % frame_index, resize_frame)
cv2.imwrite(each_video_save_full_path + "%d.jpg" % frame_count, resize_frame)
frame_count += 1
frame_index += 1
cap.release()
if __name__ == '__main__':
video2frame(videos_src_path, video_formats, frames_save_path, width, height, time_interval)
以上這篇Python OpenCV對(duì)本地視頻文件進(jìn)行分幀保存的實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python 基于 pygame 實(shí)現(xiàn)輪播圖動(dòng)畫(huà)效果
在Python中可以適應(yīng)第三方庫(kù)pygame來(lái)實(shí)現(xiàn)輪播圖動(dòng)畫(huà)的效果,使用pygame前需確保其已經(jīng)安裝,本文通過(guò)實(shí)例代碼介紹Python 基于 pygame 實(shí)現(xiàn)輪播圖動(dòng)畫(huà)效果,感興趣的朋友跟隨小編一起看看吧2024-03-03
python 逆向爬蟲(chóng)正確調(diào)用 JAR 加密邏輯
這篇文章主要介紹了python 逆向爬蟲(chóng)正確調(diào)用 JAR 加密邏輯,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2021-01-01
Python并發(fā)編程之進(jìn)程間通信原理及實(shí)現(xiàn)解析
這篇文章主要為大家介紹了Python并發(fā)編程之進(jìn)程間通信原理及實(shí)現(xiàn)解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01
如何使用Django Admin管理后臺(tái)導(dǎo)入CSV
這篇文章主要介紹了如何使用Django Admin管理后臺(tái)導(dǎo)入CSV,幫助大家更好的理解和使用django框架,感興趣的朋友可以了解下2020-11-11
python自動(dòng)截取需要區(qū)域,進(jìn)行圖像識(shí)別的方法
今天小編就為大家分享一篇python自動(dòng)截取需要區(qū)域,進(jìn)行圖像識(shí)別的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
Python使用Flask框架同時(shí)上傳多個(gè)文件的方法
這篇文章主要介紹了Python使用Flask框架同時(shí)上傳多個(gè)文件的方法,實(shí)例分析了Python中Flask框架操作文件實(shí)現(xiàn)上傳的技巧,需要的朋友可以參考下2015-03-03
深入解析Python的Tornado框架中內(nèi)置的模板引擎
模板引擎是Web開(kāi)發(fā)框架中負(fù)責(zé)前端展示的關(guān)鍵,這里我們就來(lái)以實(shí)例深入解析Python的Tornado框架中內(nèi)置的模板引擎,來(lái)學(xué)習(xí)如何編寫(xiě)Tonardo的模板.2016-07-07

