python编写的一个截图程序,功能是播放指定文件夹下的视频,按下S键即可将截图保存到指定文件夹。
代码如下:
import cv2
import os
def nothing(emp):
pass
path_video='D:\\sample\\cam08'
filename='slvid_2019_06_28__15_37_10.mp4'
path_images='D:\\sample\\newimage'
cap = cv2.VideoCapture(os.path.join(path_video,filename))
frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
isExists=os.path.exists(os.path.join(path_images,filename.split('.')[0]))
cv2.namedWindow('video')
cv2.createTrackbar('time', 'video', 0, frames, nothing)
if not isExists:
os.makedirs(os.path.join(path_images,filename.split('.')[0]))
frame_count = 0
loop_flag = 0
pos = 0
while(1):
if loop_flag == pos:
loop_flag = loop_flag + 1
cv2.setTrackbarPos('time', 'video', loop_flag)
else:
pos = cv2.getTrackbarPos('time', 'video')
loop_flag = pos
cap.set(cv2.CAP_PROP_POS_FRAMES, pos)
ret, frame = cap.read()
if ret==True:
cv2.imshow('video', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
elif cv2.waitKey(150) & 0xFF == ord('s'):
resize_frame = cv2.resize(frame, size, interpolation=cv2.INTER_AREA)
cv2.imwrite(os.path.join(path_images,filename.split('.')[0]) + "\\%d.jpg" % frame_count, resize_frame)
print(os.path.join(path_images,filename.split('.')[0]) + "\\%d.jpg" % frame_count)
frame_count += 1
else:
break
cap.release()
cv2.destroyAllWindows()
上述代码只需修改视频所在路径path_video、视频名称filename和截图保存的路径path_images,即可运行。