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

Python將視頻或者動態(tài)圖gif逐幀保存為圖片的方法

 更新時間:2019年09月10日 09:37:22   作者:小宇少俠  
本文是基于opencv將視頻和動態(tài)圖gif保存為圖像幀的方法,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友參考下吧

本文是基于opencv將視頻和動態(tài)圖gif保存為圖像幀。可以根據(jù)輸入視頻格式的不同,修改第21行。

       對動圖的處理不同于視頻,PIL庫包含對圖像序列的基本支持。當(dāng)打開gif圖像時,自動加載第一幀。當(dāng)圖像讀取完成時,拋出EOFError異常。我們可以使用seek()與tell()函數(shù)完成圖像幀的讀取。

       本代碼的前部分是對文件的讀取。數(shù)據(jù)集文件結(jié)構(gòu)如下:

|——datasets
  |——action1
   action1_1.gif
   action1_2.gif
   ......
  |——action2
   action2_1.gif
   action2_2.gif
   ......
import cv2
import os
from PIL import Image
video_path = 'PATH_ROOT/datasets/' #視頻或gif圖像的路徑
save_path = 'PATH_ROOT/save/' #保存幀的路徑
action_list = os.listdir(video_path)
for action in action_list:
 if not os.path.exists(save_path+action):
  os.mkdir(save_path+action)
 video_list = os.listdir(video_path+action)
 for video in video_list:
  prefix = video.split('.')[0]
  if not os.path.exists(save_path+action+'/'+prefix):
   os.mkdir(save_path+action+'/'+prefix)
  save_name = save_path + action + '/' + prefix + '/'
  video_name = video_path+action+'/'+video
  name = video_name.split('.')[1]
  if name == "avi":
   cap = cv2.VideoCapture(video_name)
   fps = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
   fps_count = 0
   for i in range(fps):
    ret, frame = cap.read()
    if ret:
     cv2.imwrite(save_name + str(10000 + fps_count) + '.jpg', frame)
     fps_count += 1
  if name == "gif":
   im = Image.open(video_name)
   #當(dāng)打開一個序列文件時,PIL庫自動加載第一幀。
   #可以使用seek()函數(shù)和tell()函數(shù)在不同幀之間移動。實現(xiàn)保存
   try:
    while True:
     current = im.tell()
     #為了保存為jpg格式,需要轉(zhuǎn)化。否則可以保存為png
     img = im.convert('RGB') 
     img.save(save_name+'/'+str(10000+current)+'.jpg')
     im.seek(current + 1)
   except EOFError:
    pass

知識點擴展:python如何將gif動態(tài)圖轉(zhuǎn)化成每幀圖片

from PIL import Image
import os
gifFileName = 'test.gif'
#使用Image模塊的open()方法打開gif動態(tài)圖像時,默認是第一幀
im = Image.open(gifFileName)
pngDir = gifFileName[:-4]
#創(chuàng)建存放每幀圖片的文件夾
os.mkdir(pngDir)
try:
 while True:
  #保存當(dāng)前幀圖片
  current = im.tell()
  im.save(pngDir+'/'+str(current)+'.png')
  #獲取下一幀圖片
  im.seek(current+1)
except EOFError:
  pass

總結(jié)

以上所述是小編給大家介紹的Python將視頻或者動態(tài)圖gif逐幀保存為圖片的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!

相關(guān)文章

  • 詳解python?sklearn中的數(shù)據(jù)預(yù)處理方法

    詳解python?sklearn中的數(shù)據(jù)預(yù)處理方法

    本篇文章主要講解Python的sklearn庫中常用的數(shù)據(jù)預(yù)處理方法,主要介紹工具中的內(nèi)容,即該庫中的相關(guān)方法包含的常用接口和基本使用,希望對大家有所幫助
    2023-08-08
  • PyQt QCombobox設(shè)置行高的方法

    PyQt QCombobox設(shè)置行高的方法

    今天小編就為大家分享一篇PyQt QCombobox設(shè)置行高的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • 在python中使用pymysql往mysql數(shù)據(jù)庫中插入(insert)數(shù)據(jù)實例

    在python中使用pymysql往mysql數(shù)據(jù)庫中插入(insert)數(shù)據(jù)實例

    今天小編就為大家分享一篇在python中使用pymysql往mysql數(shù)據(jù)庫中插入(insert)數(shù)據(jù)實例。具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • pycharm下配置pyqt5的教程(anaconda虛擬環(huán)境下+tensorflow)

    pycharm下配置pyqt5的教程(anaconda虛擬環(huán)境下+tensorflow)

    這篇文章主要介紹了pycharm下配置pyqt5的教程(anaconda虛擬環(huán)境下+tensorflow),本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • 圖文詳解牛頓迭代算法原理及Python實現(xiàn)

    圖文詳解牛頓迭代算法原理及Python實現(xiàn)

    牛頓迭代法又稱為牛頓-拉夫遜(拉弗森)方法,它是牛頓在17世紀提出的一種在實數(shù)域和復(fù)數(shù)域上近似求解方程的方法。本文將利用圖文詳解牛頓迭代算法原理及實現(xiàn),需要的可以參考一下
    2022-08-08
  • python機器學(xué)習(xí)之神經(jīng)網(wǎng)絡(luò)(二)

    python機器學(xué)習(xí)之神經(jīng)網(wǎng)絡(luò)(二)

    這篇文章主要為大家詳細介紹了python機器學(xué)習(xí)之神經(jīng)網(wǎng)絡(luò)第二篇,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Python自定義scrapy中間模塊避免重復(fù)采集的方法

    Python自定義scrapy中間模塊避免重復(fù)采集的方法

    這篇文章主要介紹了Python自定義scrapy中間模塊避免重復(fù)采集的方法,實例分析了Python實現(xiàn)采集的技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • 如何利用python實現(xiàn)kmeans聚類

    如何利用python實現(xiàn)kmeans聚類

    K-Means是聚類算法的一種,以距離來判斷數(shù)據(jù)點間的相似度并對數(shù)據(jù)進行聚類,下面這篇文章主要給大家介紹了關(guān)于如何利用python實現(xiàn)kmeans聚類的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-05-05
  • python分析實現(xiàn)微信釘釘?shù)溶浖嚅_分身

    python分析實現(xiàn)微信釘釘?shù)溶浖嚅_分身

    我發(fā)現(xiàn)壇友分享的很多都是通過cmd?去start?多個微信,雖然能實現(xiàn)多開,但不夠靈活,比如我上午登錄了一個微信,下午在登錄就不太好用了,當(dāng)然也可能是我start的姿勢不對。于是我就搜了下單實例原理,自己動手實現(xiàn)了個隨用隨開的
    2022-02-02
  • 如何在Python中引用其他模塊

    如何在Python中引用其他模塊

    這篇文章主要介紹了如何在Python中引用其他模塊,在Python中,除了可以自定義模塊外,還可以引用其他模塊,主要包括使用標準庫和第三方模塊,下面文章分別詳細的介紹,需要的小伙伴可以參考一下
    2022-06-06

最新評論