# -*- coding=utf-8 -*-
import cv2
import argparse
import os
# cam = 'rtsp://username:passwd@192.168.2.170:554/11'
# cam = 'test.mp4'
def basic_options():
parser = argparse.ArgumentParser()
parser.add_argument('--cam', type=str, default=None, help='camera url or video path')
parser.add_argument('--interval', type=int, default=0, help='frame interval. equal 1 is for every frame')
parser.add_argument('--savepath', type=str, default='savepath', help='path for frame images')
args = parser.parse_args()
return args
if __name__ == '__main__':
parser = basic_options()
cap = cv2.VideoCapture(parser.cam)
if not cap.isOpened():
exit()
print('fps=', cap.get(cv2.CAP_PROP_FPS))
print('frame count=', cap.get(cv2.CAP_PROP_FRAME_COUNT))
print('frame width=', cap.get(cv2.CAP_PROP_FRAME_WIDTH))
print('frame height=', cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
if not os.path.exists(parser.savepath):
os.makedirs(parser.savepath)
framenum = 0
while (True):
ret, frame = cap.read()
if not ret:
break
cv2.imshow('frame', frame)
framenum += 1
if parser.interval == 0:
if cv2.waitKey(10) & 0xFF == ord(' '):
cv2.imwrite(os.path.join(parser.savepath, str(framenum) + '.jpg'), frame)
if parser.interval > 0:
if framenum % parser.interval == 0:
cv2.imwrite(os.path.join(parser.savepath, str(framenum) + '.jpg'), frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
python opencv从视频中保存特定帧的图像
最新推荐文章于 2021-11-04 09:14:27 发布