16713720339 发表于 2022-12-13 10:17

文件夹下所有mp4提取指定帧

粘贴路径,输入多少帧截图一次,就可以把文件夹下所有的mp4文件截图


import cv2
import os


# 从.mp4 数据类型的视频中提取图像
def splitFrames_mp4(sourceFileName,zhenshu):

    # 在这里把后缀接上
    video_path = os.path.join(path, sourceFileName + '.mp4')
    times = 0   #照片标号从多少开始

    # 提取视频的频率,每25帧提取一个
    frameFrequency = zhenshu
    # 输出图片到当前目录vedio文件夹下
    outPutDirName = path +'/'+ sourceFileName + '/'

    # 如果文件目录不存在则创建目录
    if not os.path.exists(outPutDirName):
      os.makedirs(outPutDirName)

    camera = cv2.VideoCapture(video_path)
    while True:
      times+=1
      res, image = camera.read()
      if not res:
            # print('not res , not image')
            break

      if times%frameFrequency==0:
            #cv2.imwrite(outPutDirName + str(times)+'.jpg', image) #复制的时候带的方法

            #cv2.imwrite(outPutDirName + str(times)+'.jpg', image) #该方法不成功

            cv2.imencode('.jpg', image).tofile(outPutDirName + str(times)+'.jpg') ##正确方法

            print(outPutDirName + str(times)+'.jpg')

      #cv2.imwrite(outPutDirName + str(times) + '.jpg', image)
      #print(times)
    print(sourceFileName+'图片提取结束')
    camera.release()

if __name__ == '__main__':
    path = input('输入地址,将会截取所有视频截图')
    zhenshu = int(input('多少帧截图一次'))

    im_file = path

    # for im_name in im_names:
    for im_name in os.listdir(im_file):
      suffix_file = os.path.splitext(im_name)[-1]
      
      print('开始截取'+im_name)

      sourceFileName = os.path.splitext(im_name)
      splitFrames_mp4(sourceFileName,zhenshu)





自己打包一下吧,打包的exe太大了

dtadsl 发表于 2022-12-13 12:17

批量视频截图,但不同的视频需要截图的帧数可能不一样。

如果是要制作视频缩略图,可以用这个软件 Video Thumbnails Maker Platinum
官网:https://www.suu-design.com/downloads.html

16713720339 发表于 2022-12-13 19:14

dtadsl 发表于 2022-12-13 12:17
批量视频截图,但不同的视频需要截图的帧数可能不一样。

如果是要制作视频缩略图,可以用这个软件 Video ...

要是早知道有这软件我就不做这个了{:301_1009:}

seawaycao 发表于 2022-12-13 12:07

谢谢分享,收藏备用。

jackyyue_cn 发表于 2022-12-13 13:34

强大啊 学习了
这个截图能改成保存 png 格式的不?

ymhld 发表于 2022-12-13 13:48

jackyyue_cn 发表于 2022-12-13 13:34
强大啊 学习了
这个截图能改成保存 png 格式的不?

看cv2的处理能力,应该可以吧

leng5460 发表于 2022-12-13 14:36


强大啊 学习了

Yruz 发表于 2022-12-13 15:21

感谢lz分享,cv2库真心强大啊

love008 发表于 2022-12-13 16:01

opencv-python是什么版本?
4.6.0.66会出现

camera = cv2.VideoCapture(video_path)
AttributeError: module 'cv2' has no attribute 'VideoCapture'

嬉皮笑脸 发表于 2022-12-13 18:31

mark一下
页: [1] 2
查看完整版本: 文件夹下所有mp4提取指定帧