
有时,在整理文件夹(文件夹)中大大小小的视频文件的废墟时,没有时间查看每个文件的内容。这就是想到的缩略图的地方,它使您可以从视频片段中切出片段的形式来构思内容。
让我们创建一个小程序,该程序将为当前Windows文件夹中的每个文件创建缩略图,并将时间线添加到剪切文件中。
在python程序的开头标准导入模块:
import numpy as np
import cv2
import os
我们指出要在哪个文件夹中查找文件并为用户添加一条消息:
file=file
print('...')
path=r'E:\1'
os.chdir(path)
在这里,程序将处理E驱动器中文件夹1中的所有文件。
接下来,opencv进入战斗,为其剪切帧和时间线:
vidcap = cv2.VideoCapture(path+'\\'+file)
fps = vidcap.get(cv2.CAP_PROP_FPS)
#print(fps)
n=12
total_frames = vidcap.get(cv2.CAP_PROP_FRAME_COUNT)
time_line = total_frames / fps
frames_step = total_frames//n
time_line_step=time_line//n
#print(int(time_line_step))
a=[]
b=[]
n-切片中的文件数,为12件。
由于时间轴切片以秒为单位,因此它可以正确显示在帧上,因此我们
添加一个导致时间格式为00:00:00的函数:
def sec_to_time(t):
h=str(t//3600)
m=(t//60)%60
s=t%60
if m<10:
m='0'+str(m)
else:
m=str(m)
if s<10:
s='0'+str(s)
else:
s=str(s)
#print(h+':'+m+':'+s)
t=h+':'+m+':'+s
return t
现在我们得到图片,将它们的大小减小50%,并将它们保存为磁盘作为中间文件:
for i in range(n):
vidcap.set(1,i*frames_step)
success,image = vidcap.read()
#
scale_percent = 50
width = int(image.shape[1] * scale_percent / 100)
height = int(image.shape[0] * scale_percent / 100)
image=cv2.resize(image, (width, height))
# c time_line
font = cv2.FONT_HERSHEY_COMPLEX
t=int(time_line_step)*i
image=cv2.putText(image, sec_to_time(t), (100, 30), font, 0.5, color=(0, 0, 255), thickness=0)
cv2.imwrite('image'+str(i)+'.jpg',image)
a.append('image'+str(i)+'.jpg')
vidcap.release()
我们使用opencv将生成的文件彼此水平地粘合在一起,观察顺序:
def glue (img1,img2,img3,x):
i1 = cv2.imread(img1)
i2 = cv2.imread(img2)
i3 = cv2.imread(img3)
vis = np.concatenate((i1, i2, i3), axis=1)
cv2.imwrite('out'+str(x)+'.png', vis)
b.append('out'+str(x)+'.png')
x=0
while x<len(a):
glue(a[x],a[x+1],a[x+2],x)
x+=3
垂直将产生的“三胞胎”胶粘:
#
def glue2 (img1,img2,img3,img4):
i1 = cv2.imread(img1)
i2 = cv2.imread(img2)
i3 = cv2.imread(img3)
i4 = cv2.imread(img4)
vis = np.concatenate((i1, i2, i3,i4), axis=0)
cv2.imwrite(file[:-4]+'.jpeg', vis)
glue2(b[0],b[1],b[2],b[3])
我们通过删除临时文件来清理文件夹:
#
c=['jpg', 'png']
for root, dirs, files in os.walk(path):
for file in files:
if file[-3:] in c:
os.remove(file)
我们对文件夹中的所有视频文件执行上述过程:
video=['wmv', 'mp4', 'avi', 'mov', 'MP4', '.rm', 'mkv']
for root, dirs, files in os.walk(r'E:/1'):
for file in files:
if file[-3:] in video:
print(' -'+file)
tumbnail(file)
我所属人群的程序代码,首先下载代码,然后阅读文章下载。
PS时间轴并非没有缺陷,与实际时间轴视频有些脱节。
这在大型视频文件上尤其明显。