Page MenuHomec4science

gmov2gmova
No OneTemporary

File Metadata

Created
Tue, Jun 4, 18:29

gmov2gmova

#!/usr/bin/env python
import sys
import os
from optparse import OptionParser
from pNbody import Movie
from numpy import *
def logfilter(mat,cd):
mn = 0.
mx = 255.
mat = 255.*log(1.+(mat-mn)/(cd)) / log(1.+(mx-mn)/(cd))
return mat
def linfilter(mat,mn,mx):
mat = clip(mat,mn,mx)
mat = 255.*(mat-mn)/(mx-mn)
return mat
####################################################################################
def parse_options():
####################################################################################
usage = "usage: %prog [options] file"
parser = OptionParser(usage=usage)
parser.add_option("-o",
action="store",
dest="outfile",
type="string",
default = None,
help="output filename",
metavar=" FILE")
parser.add_option("--log",
action="store",
dest="log",
type="int",
default = None,
help="log filter value (0-255)",
metavar=" INT")
(options, args) = parser.parse_args()
outfile = options.outfile
return args[0],outfile,options
####################################################################################
#
# MAIN
#
####################################################################################
file,outfile,options = parse_options()
#bname = os.path.split(os.path.splitext(file)[0])[1]
#ext = os.path.splitext(name)[1]
film = Movie.Movie(file)
film.open()
size = [film.numByte,film.numLine]
fo = Movie.Movie(outfile)
fo.new(film.numByte/2,film.numLine)
while 1:
data = film.read_one(mode='array')
if data==None: break
# cut image
r2 = data[:,0:size[0]/2]
g2 = data[:,0:size[0]/2]
b2 = data[:,0:size[0]/2]
r1 = data[:,size[0]/2:]
g1 = data[:,size[0]/2:]
b1 = data[:,size[0]/2:]
if options.log!=None:
r1 = logfilter(r1,options.log).astype(uint8)
g2 = logfilter(g2,options.log).astype(uint8)
b2 = logfilter(b2,options.log).astype(uint8)
r = r1
g = g2
b = b2
r = r.tostring()
g = g.tostring()
b = b.tostring()
fo.write_pic(film.current_time,r)
fo.write_pic(film.current_time,g)
fo.write_pic(film.current_time,b)

Event Timeline