def avi2hdf5(avifn,ofn,t0, P, cmdlog): """ t0: starting time avifn: input AVI ofn: output HDF5 file P: parameters """ avifn = Path(avifn).expanduser() finf = getaviprop(avifn) P['superx'] = finf['xpix']; P['supery'] = finf['ypix']; P['nframe'] = finf['nframe'] #%% time vector rawind = arange(P['nframe'])+1 ut1 = frame2ut1(t0,P['kineticsec'],rawind) #%% ingest data (consider RAM) #NOTE someday could do iterative read/write, would be smarter. vid = cv2.VideoCapture(str(avifn)) img8 = zeros((P['nframe'],P['supery'],P['superx']), dtype='uint8') #zeros in case bad frame for i in range(P['nframe']): ret,img = vid.read() #a 3-D Numpy array, last axis is BGR: blue,green,red if not ret: print('error on frame {}'.format(i)) continue img8[i,...] = img[...,0] #note assumes already grayscale vid.release() vid2h5(img8,ut1, rawind, ofn, P, cmdlog)
def main(flist,ofn, P,cmdlog): ut1_unix,rawind,kineticsec,header = fitsreadermulti(flist,ofn) P['kineticsec'] = kineticsec P['header'] = header vid2h5(None,ut1_unix, rawind, ofn, P, cmdlog)
if __name__ == "__main__": from argparse import ArgumentParser p = ArgumentParser(description='Andor Neo Spool reader, plotter, converter') p.add_argument('path',help='path containing 12-bit Neo spool files in broken format (2008-spring 2011)') p.add_argument('-p','--pix',help='nx ny number of x and y pixels respectively',nargs=2,default=(2544,2160),type=int) p.add_argument('-b','--bin',help='nx ny number of x and y binning respectively',nargs=2,default=(1,1),type=int) p.add_argument('-k','--kineticsec',help='kinetic rate of camera (sec) = 1/fps',type=float) p.add_argument('--rotccw',help='rotate CCW value in 90 deg. steps',type=int,default=0) p.add_argument('--transpose',help='transpose image',action='store_true') p.add_argument('--flipud',help='vertical flip',action='store_true') p.add_argument('--fliplr',help='horizontal flip',action='store_true') p.add_argument('-s','--startutc',help='utc time of nights recording') p.add_argument('-o','--output',help='extract raw data into this file [h5,fits,mat]') p.add_argument('-v','--verbose',help='debugging',action='count',default=0) p.add_argument('--fire',help='fire filename') p = p.parse_args() params = {'kineticsec':p.kineticsec,'rotccw':p.rotccw,'transpose':p.transpose, 'flipud':p.flipud,'fliplr':p.fliplr,'fire':p.fire} path = Path(p.path).expanduser() if path.is_file() and path.suffix == '.h5': print('writing metadata') rawind,ut1_unix = h5toh5(path,p.kineticsec,p.startutc) else: rawind,ut1_unix = oldspool(path,p.pix,p.bin,p.kineticsec,p.startutc,p.output) vid2h5(None,ut1_unix,rawind,p.output,params)