⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 video2rgb.py

📁 Python语言编译器
💻 PY
字号:
#! /usr/bin/env python# Convert CMIF movie file(s) to a sequence of rgb images# Help functiondef help():	print 'Usage: video2rgb [options] [file] ...'	print	print 'Options:'	print '-q         : quiet, no informative messages'	print '-m         : create monochrome (greyscale) image files'	print '-f prefix  : create image files with names "prefix0000.rgb"'	print 'file ...   : file(s) to convert; default film.video'# Imported modulesimport syssys.path.append('/ufs/jack/src/av/video') # Increase chance of finding VFileimport VFileimport timeimport getoptimport stringimport imgfileimport imgconv# Global optionsquiet = 0prefix = 'film'seqno = 0mono = 0# Main program -- mostly command line parsingdef main():	global quiet, prefix, mono	# Parse command line	try:		opts, args = getopt.getopt(sys.argv[1:], 'qmf:')	except getopt.error, msg:		sys.stdout = sys.stderr		print 'Error:', msg, '\n'		help()		sys.exit(2)	# Interpret options	try:		for opt, arg in opts:			if opt == '-q': quiet = 1			if opt == '-f': prefix = arg			if opt == '-m': mono = 1	except string.atoi_error:		sys.stdout = sys.stderr		print 'Option', opt, 'requires integer argument'		sys.exit(2)	# Process all files	if not args: args = ['film.video']	sts = 0	for filename in args:		sts = (process(filename) or sts)	# Exit with proper exit status	sys.exit(sts)# Process one movie filedef process(filename):	try:		vin = VFile.VinFile(filename)	except IOError, msg:		sys.stderr.write(filename + ': I/O error: ' + `msg` + '\n')		return 1	except VFile.Error, msg:		sys.stderr.write(msg + '\n')		return 1	except EOFError:		sys.stderr.write(filename + ': EOF in video header\n')		return 1	if not quiet:		vin.printinfo()		width, height = int(vin.width), int(vin.height)	try:		if mono:			cf = imgconv.getconverter(vin.format, 'grey')		else:			cf = imgconv.getconverter(vin.format, 'rgb')	except imgconv.error:		print 'Sorry, no converter available for type',vin.format		return	if mono:		depth = 1		bpp = 1	else:		depth = 3		bpp = 4	convert(vin, cf, width, height, depth, bpp, vin.packfactor)def convert(vin, cf, width, height, depth, bpp, pf):	global seqno	if type(pf) == type(()):		xpf, ypf = pf	elif pf == 0:		xpf = ypf = 1	else:		xpf = ypf = pf	while 1:		try:			time, data, cdata = vin.getnextframe()		except EOFError:			return		if cdata:			print 'Film contains chromdata!'			return		data = cf(data, width/xpf, height/abs(ypf))		if pf:			data = applypackfactor(data, width, height, pf, bpp)		s = `seqno`		s = '0'*(4-len(s)) + s		fname = prefix + s + '.rgb'		seqno = seqno + 1		if not quiet:			print 'Writing',fname,'...'		imgfile.write(fname, data, width, height, depth)	def applypackfactor(image, w, h, pf, bpp):	import imageop	if type(pf) == type(()):		xpf, ypf = pf	elif pf == 0:		xpf = ypf = 1	else:		xpf = ypf = pf	w1 = w/xpf	h1 = h/abs(ypf)	if ypf < 0:		ypf = -ypf		image = imageop.crop(image, bpp, w1, h1, 0, h1-1, w1-1, 0)	return imageop.scale(image, bpp, w1, h1, w, h)	# Don't forget to call the main programtry:	main()except KeyboardInterrupt:	print '[Interrupt]'

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -