文件夹下所有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太大了
批量视频截图,但不同的视频需要截图的帧数可能不一样。
如果是要制作视频缩略图,可以用这个软件 Video Thumbnails Maker Platinum
官网:https://www.suu-design.com/downloads.html
dtadsl 发表于 2022-12-13 12:17
批量视频截图,但不同的视频需要截图的帧数可能不一样。
如果是要制作视频缩略图,可以用这个软件 Video ...
要是早知道有这软件我就不做这个了{:301_1009:} 谢谢分享,收藏备用。 强大啊 学习了
这个截图能改成保存 png 格式的不? jackyyue_cn 发表于 2022-12-13 13:34
强大啊 学习了
这个截图能改成保存 png 格式的不?
看cv2的处理能力,应该可以吧
强大啊 学习了 感谢lz分享,cv2库真心强大啊 opencv-python是什么版本?
4.6.0.66会出现
camera = cv2.VideoCapture(video_path)
AttributeError: module 'cv2' has no attribute 'VideoCapture' mark一下
页:
[1]
2