#!/usr/bin/python import sys import struct infile = "stream.yuv" fp=[] FH = open(infile, 'rb') ## read header (let's analyse it some day...) pt=39 line = FH.read(pt) lenY=640*480 lenUV = 320*240 frame_len=lenY+2*lenUV ## read "FRAME\n" line = FH.read(6) while line == 'FRAME\n': newf = open(infile, 'rb') newf.seek(pt+6) fp.append(newf) FH.seek(frame_len,1) pt+=6+frame_len line = FH.read(6) print "P5\n640 720\n255" output=[0]*frame_len N=len(fp)/2 #for each pixel of each channel, read the vaues in every frame and perform the filtering for k in range(frame_len): v=[] for f in fp: v.append(f.read(1)) v.sort() output[k]=v[N] for k in range(lenY): sys.stdout.write(output[k]) Sx=640 Sy=480 for k in range(Sy/2): for j in range(Sx/2): sys.stdout.write(output[lenY+ k*Sx/2 +j]) for j in range(Sx/2): sys.stdout.write(output[lenY+lenUV+k*Sx/2 +j])