# -*- coding: utf-8 -*-
|
|
# 命令
|
__author__ = '上海色宁'
|
|
import datetime
|
import cv2
|
import getopt
|
import sys
|
|
|
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 <output_video_name> -l <length_seconds>')
|
print(' or: 0_get_video.py --output_video_name=<video.mp4> --length_seconds=30')
|
sys.exit(2)
|
|
# 处理 返回值options是以元组为元素的列表。
|
if len(opts) <= 0:
|
print('Error: Parameters not enough!')
|
print('Error: 0_get_video.py -o <output_video_name> -l <length_seconds>')
|
print(' or: 0_get_video.py --output_video_name=<video.mp4> --length_seconds=30')
|
sys.exit()
|
for opt, arg in opts:
|
if opt in ("-h", "--h", "-help", "--help"):
|
print('Error: 0_get_video.py -o <output_video_name> -l <length_seconds>')
|
print(
|
' or: 0_get_video.py --output_video_name=<video.mp4> --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:])
|