# -*- coding: utf-8 -*- # 命令 __author__ = '上海色宁' import datetime import cv2 import getopt import sys from _image_clip_setting import image_clip def start_check_opts(argv): filemame = datetime.datetime.now().strftime("%Y-%m-%d-%H-%M-%S")+".mp4" length_seconds = "" try: """ options, args = getopt.getopt(args, shortopts, longopts=[]) 参数args:一般是sys.argv[1:]。过滤掉sys.argv[0],它是执行脚本的名字,不算做命令行参数。 参数shortopts:短格式分析串。例如:"hp:i:",h后面没有冒号,表示后面不带参数;p和i后面带有冒号,表示后面带参数。 参数longopts:长格式分析串列表。例如:["help", "ip=", "port="],help后面没有等号,表示后面不带参数;ip和port后面带冒号,表示后面带参数。 返回值options是以元组为元素的列表,每个元组的形式为:(选项串, 附加参数),如:('-i', '192.168.0.1') 返回值args是个列表,其中的元素是那些不含'-'或'--'的参数。 """ opts, args = getopt.getopt( argv, "ho:l:", ["help", "output_video_name=", "length_seconds="]) except getopt.GetoptError: print('Error: 0_get_video.py -o -l ') print(' or: 0_get_video.py --output_video_name= --length_seconds=30') sys.exit(2) # 处理 返回值options是以元组为元素的列表。 if len(opts) <= 0: print('Error: Parameters not enough!') print('Error: 0_get_video.py -o -l ') print(' or: 0_get_video.py --output_video_name= --length_seconds=30') sys.exit() for opt, arg in opts: if opt in ("-h", "--h", "-help", "--help"): print('Error: 0_get_video.py -o -l ') print( ' or: 0_get_video.py --output_video_name= --length_seconds=30') sys.exit() elif opt in ("-o", "--output_video_name"): filemame = arg elif opt in ("-l", "--length_seconds"): length_seconds = arg if (not length_seconds.isdigit()): print(length_seconds + " is not valid digit !!!") sys.exit() start_save_mp4(filemame, int(length_seconds)) def start_save_mp4(filename, length_seconds): print('ready to save '+str(length_seconds)+' seconds mp4 into file '+filename) cap = cv2.VideoCapture(0) cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640) cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480) mp4_fourcc = cv2.VideoWriter_fourcc('m', 'p', '4', 'v') mp4_fps=25 mp4_size=(640, 480) vout=cv2.VideoWriter() vout.open(filename, mp4_fourcc, mp4_fps, mp4_size) cnt=0 while cnt < mp4_fps * length_seconds: ret, frame=cap.read() vout.write(frame) cnt += 1 vout.release() cap.release() # 程序入口 if __name__ == '__main__': start_check_opts(sys.argv[1:])