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

查看 117|回复 9
作者:16713720339   
粘贴路径,输入多少帧截图一次,就可以把文件夹下所有的mp4文件截图
[Python] 纯文本查看 复制代码
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)[1].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)[0]
        splitFrames_mp4(sourceFileName,zhenshu)
自己打包一下吧,打包的exe太大了

截图, 文件夹

dtadsl   

批量视频截图,但不同的视频需要截图的帧数可能不一样。
如果是要制作视频缩略图,可以用这个软件 Video Thumbnails Maker Platinum
官网:https://www.suu-design.com/downloads.html
16713720339
OP
  


dtadsl 发表于 2022-12-13 12:17
批量视频截图,但不同的视频需要截图的帧数可能不一样。
如果是要制作视频缩略图,可以用这个软件 Video ...

要是早知道有这软件我就不做这个了
seawaycao   

谢谢分享,收藏备用。
jackyyue_cn   

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


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

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

强大啊 学习了
Yruz   

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

opencv-python是什么版本?
4.6.0.66会出现
camera = cv2.VideoCapture(video_path)
AttributeError: module 'cv2' has no attribute 'VideoCapture'
嬉皮笑脸   

mark一下
您需要登录后才可以回帖 登录 | 立即注册

返回顶部