黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

Python將視頻或者動態圖gif逐幀保存為圖片

系統 1982 0

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

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

?????? 本代碼的前部分是對文件的讀取。數據集文件結構如下:

            
              |——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)
           #當打開一個序列文件時,PIL庫自動加載第一幀。
           #可以使用seek()函數和tell()函數在不同幀之間移動。實現保存
           try:
              while True:
                   current = im.tell()
                   #為了保存為jpg格式,需要轉化。否則可以保存為png
                   img = im.convert('RGB')  
                   img.save(save_name+'/'+str(10000+current)+'.jpg')
                   im.seek(current + 1)
           except EOFError:
               pass

            
          

?


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論