标题:Python分解视频,第一频会缺失,如何解决?
只看楼主
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:33
帖 子:1883
专家分:2904
注 册:2009-12-22
结帖率:89.13%
已结贴  问题点数:100 回复次数:2 
Python分解视频,第一频会缺失,如何解决?
待分解的频共10帧,分解出来应该是1-10这10个数字的图片。
test.avi.zip (524.12 KB)


程序代码:
import cv2
import os
   
def video2frame(videos_path,frames_save_path,time_interval):

  '''
  :param videos_path: 视频的存放路径
  :param frames_save_path: 视频切分成帧之后图片的保存路径
  :param time_interval: 保存间隔
  :return:
  '''
  vidcap = cv2.VideoCapture(videos_path)
  success, image = vidcap.read()
  count = 0
  while success:
    success, image = vidcap.read()
    if not success:
        break
    count += 1
    if count % time_interval == 0:
      cv2.imencode('.jpg', image)[1].tofile(frames_save_path + "/frame%d.jpg" % count)
    # if count == 20:
    #   break
  print(count)

if __name__ == '__main__':
   videos_path = 'E:/1.mp4'
   frames_save_path = 'E:/图片'
   time_interval = 1  #几帧保存一次
isExists = os.path.exists(frames_save_path)
if not isExists:
  os.makedirs(frames_save_path)
video2frame(videos_path, frames_save_path, time_interval)
搜索更多相关主题的帖子: 分解 count image 视频 if 
2022-05-17 15:53
apull
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:三体星系
等 级:版主
威 望:185
帖 子:1404
专家分:8479
注 册:2010-3-16
得分:100 
程序代码:
import cv2
import os
   
def video2frame(videos_path,frames_save_path,time_interval):
    '''
    :param videos_path: 视频的存放路径
    :param frames_save_path: 视频切分成帧之后图片的保存路径
    :param time_interval: 保存间隔
    :return:保存文件数
    '''
    vidcap = cv2.VideoCapture()
    #success, image = vidcap.read()  这里把第一帧丢掉了
    if not vidcap.open(videos_path):
        print("文件打开错误!")
        return -1

    count = 0
    while True:
        success, image = vidcap.read()
        if not success:
            break
        count += 1
        if count % time_interval == 0:
            cv2.imencode('.jpg', image)[1].tofile(frames_save_path + "/frame%d.jpg" % count) 
        # if count == 20:
        #   break
    vidcap.release() #释放资源
    #print(count)
    return count

if __name__ == '__main__':
    videos_path = 'test.avi'
    frames_save_path = 'img'
    time_interval = 1  #几帧保存一次
    isExists = os.path.exists(frames_save_path)
    if not isExists:
        os.makedirs(frames_save_path)
    print(video2frame(videos_path, frames_save_path, time_interval))



[此贴子已经被作者于2022-5-17 22:10编辑过]

2022-05-17 22:02
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:33
帖 子:1883
专家分:2904
注 册:2009-12-22
得分:0 
非常感谢apull版。

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2022-05-18 06:26



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-509102-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.187397 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved