def main(): global startframe tree = utils.open_project(sys.argv) if tree == None: return os.chdir("shot_slitscans") '''cv.NamedWindow("win", cv.CV_WINDOW_AUTOSIZE) cv.MoveWindow("win", 500, 200) cv.SetMouseCallback("win", mouse_callback)''' bg_img = cv.CreateImage((576, 576), cv.IPL_DEPTH_8U, 1) #cv.Set(bg_img, (180)) files = sorted( glob.glob("*.png") ) print(files) i = 0 while i < len(files): file = files[i] startframe = int( file.split("_")[3].split(".")[0] ) print(startframe) cap = cv.CreateFileCapture(file) img = cv.QueryFrame(cap) win_name = "%d" % (int(float(i+1)*100.0/len(files))) + "% - " + file cv.NamedWindow(win_name, cv.CV_WINDOW_AUTOSIZE) cv.MoveWindow(win_name, 500, 200) cv.SetMouseCallback(win_name, mouse_callback) cv.ShowImage(win_name, bg_img) cv.ShowImage(win_name, img) key = cv.WaitKey(0) print(key) if key in [2555904, 1113939]: # right arrow i += 1 elif key in [2424832, 1113937]: # left arrow i -= 1 if i < 0: i = 0 elif key in [27, 1048603]: # ESC break elif key in [1113941]: # page up i -= 100 if i < 0: i = 0 elif key in [1113942]: # page down i += 100 else: print("Unknown key code: {}".format(key)) cv.DestroyWindow(win_name) src_dir = os.path.dirname(sys.argv[0]) os.chdir(src_dir) os.system("python 02_2_save-shots.py \"" + sys.argv[1] + "\"")
def main(): global startframe tree = utils.open_project(sys.argv) if tree == None: return os.chdir("shot_slitscans") '''cv.NamedWindow("win", cv.CV_WINDOW_AUTOSIZE) cv.MoveWindow("win", 500, 200) cv.SetMouseCallback("win", mouse_callback)''' bg_img = cv.CreateImage((576, 576), cv.IPL_DEPTH_8U, 1) #cv.Set(bg_img, (180)) files = sorted(glob.glob("*.png")) print(files) i = 0 while i < len(files): file = files[i] startframe = int(file.split("_")[3].split(".")[0]) print(startframe) cap = cv.CreateFileCapture(file) img = cv.QueryFrame(cap) win_name = "%d" % (int( float(i + 1) * 100.0 / len(files))) + "% - " + file cv.NamedWindow(win_name, cv.CV_WINDOW_AUTOSIZE) cv.MoveWindow(win_name, 500, 200) cv.SetMouseCallback(win_name, mouse_callback) cv.ShowImage(win_name, bg_img) cv.ShowImage(win_name, img) key = cv.WaitKey(0) print(key) if key in [2555904, 1113939]: # right arrow i += 1 elif key in [2424832, 1113937]: # left arrow i -= 1 if i < 0: i = 0 elif key in [27, 1048603]: # ESC break elif key in [1113941]: # page up i -= 100 if i < 0: i = 0 elif key in [1113942]: # page down i += 100 else: print("Unknown key code: {}".format(key)) cv.DestroyWindow(win_name) src_dir = os.path.dirname(sys.argv[0]) os.chdir(src_dir) os.system("python 02_2_save-shots.py \"" + sys.argv[1] + "\"")
def main(): tree = utils.open_project(sys.argv) if tree == None: return try: os.mkdir(OUTPUT_DIR) except OSError: pass movie = tree.getroot() file_path = movie.attrib["path"] #fps = float( movie.attrib["fps"] ) cap = cv.CreateFileCapture(file_path) cv.QueryFrame(cap) # skip frames in the beginning, if neccessary start_frame = int(movie.attrib["start_frame"]) for i in range(start_frame): cv.QueryFrame(cap) end_frame = int(movie.attrib["end_frame"]) every_nth_frame = int((end_frame - start_frame) / 100) print "every", every_nth_frame, "frames" #print "=", every_nth_frame / fps, "sec" frame = start_frame counter = 1 while 1: print counter img = cv.QueryFrame(cap) if not img or frame > end_frame: break img_small = cv.CreateImage( (WIDTH, int(img.height * float(WIDTH) / img.width)), cv.IPL_DEPTH_8U, 3) cv.Resize(img, img_small, cv.CV_INTER_CUBIC) cv.SaveImage(os.path.join(OUTPUT_DIR, "still_%07d.jpg" % (frame)), img_small) for i in range(every_nth_frame - 1): cv.GrabFrame(cap) frame += every_nth_frame counter += 1 #raw_input("- done -") return
def main(): tree = utils.open_project(sys.argv) if tree == None: return try: os.mkdir(OUTPUT_DIR) except OSError: pass movie = tree.getroot() file_path = movie.attrib["path"] #fps = float( movie.attrib["fps"] ) cap = cv.CreateFileCapture(file_path) cv.QueryFrame(cap) # skip frames in the beginning, if neccessary start_frame = int( movie.attrib["start_frame"] ) for i in range(start_frame): cv.QueryFrame(cap) end_frame = int( movie.attrib["end_frame"] ) every_nth_frame = int( (end_frame - start_frame) / 100 ) print "every", every_nth_frame, "frames" #print "=", every_nth_frame / fps, "sec" frame = start_frame counter = 1 while 1: print counter img = cv.QueryFrame(cap) if not img or frame > end_frame: break img_small = cv.CreateImage((WIDTH, int( img.height * float(WIDTH)/img.width )), cv.IPL_DEPTH_8U, 3) cv.Resize(img, img_small, cv.CV_INTER_CUBIC) cv.SaveImage(os.path.join(OUTPUT_DIR,"still_%07d.jpg" % (frame)), img_small) for i in range(every_nth_frame-1): cv.GrabFrame(cap) frame += every_nth_frame counter += 1 #raw_input("- done -") return
def main(): tree = utils.open_project(sys.argv) if tree == None: return try: os.mkdir(OUTPUT_DIR) except OSError: pass movie = tree.getroot() file_path = movie.attrib["path"]
def main(): tree = utils.open_project(sys.argv) if tree == None: return #frames = [os.path.splitext(file)[0] for file in os.listdir(os.getcwd() + "\\" + OUTPUT_DIR_NAME) if not os.path.isdir(file)] frames = [ os.path.splitext(os.path.basename(file))[0] for file in glob.glob(os.path.join(OUTPUT_DIR_NAME, "*.png")) ] #os.getcwd() + "\\" + frames = [int(frame) for frame in frames] frames = sorted(frames) movie = tree.getroot() # frame count movie.set("frames", str(frames[-1] - frames[0])) movie.set("start_frame", str(frames[0])) movie.set("end_frame", str(frames[-1] - 1)) tree.write("project.xml") f = open(os.path.join(os.getcwd(), "shots.txt"), "w") for i, frame in enumerate(frames): if i == len(frames) - 1: break f.write( str(frame) + "\t" + str(frames[i + 1] - 1) + "\t" + str(frames[i + 1] - frame) + "\n") if i > 0: diff = frames[i] - frames[i - 1] if abs(diff) <= 5: print "%d -> %d: %d" % (frames[i - 1], frames[i], diff) f.close() print "don't forget to add FPS information!" raw_input("- done -") return
def main(): tree = utils.open_project(sys.argv) if tree == None: return # frames = [os.path.splitext(file)[0] for file in os.listdir(os.getcwd() + "\\" + OUTPUT_DIR_NAME) if not os.path.isdir(file)] frames = [ os.path.splitext(os.path.basename(file))[0] for file in glob.glob(os.path.join(OUTPUT_DIR_NAME, "*.png")) ] # os.getcwd() + "\\" + frames = [int(frame) for frame in frames] frames = sorted(frames) movie = tree.getroot() # frame count movie.set("frames", str(frames[-1] - frames[0])) movie.set("start_frame", str(frames[0])) movie.set("end_frame", str(frames[-1] - 1)) tree.write("project.xml") f = open(os.path.join(os.getcwd(), "shots.txt"), "w") for i, frame in enumerate(frames): if i == len(frames) - 1: break f.write(str(frame) + "\t" + str(frames[i + 1] - 1) + "\t" + str(frames[i + 1] - frame) + "\n") if i > 0: diff = frames[i] - frames[i - 1] if abs(diff) <= 5: print "%d -> %d: %d" % (frames[i - 1], frames[i], diff) f.close() print "don't forget to add FPS information!" raw_input("- done -") return
def main(): BLACK_AND_WHITE = False THRESHOLD = 0.48 BW_THRESHOLD = 0.4 if len(sys.argv) < 2: print "usage: %s project_dir [bw]" % (sys.argv[0]) return if len(sys.argv) > 2: if sys.argv[2] == "bw": BLACK_AND_WHITE = True THRESHOLD = BW_THRESHOLD print " B/W MODE" tree = utils.open_project(sys.argv, False) if tree == None: return try: os.mkdir(OUTPUT_DIR_NAME) except: pass movie = tree.getroot() file_path = movie.attrib["path"] cap = cv.CreateFileCapture(file_path) if DEBUG: cv.NamedWindow("win", cv.CV_WINDOW_AUTOSIZE) cv.MoveWindow("win", 200, 200) hist = None prev_hist = None prev_img = None pixel_count = None frame_counter = 0 last_frame_black = False black_frame_start = -1 t = time.time() while 1: img_orig = cv.QueryFrame(cap) if not img_orig: # eof output_file = os.path.join(OUTPUT_DIR_NAME, "%06d.png" % (frame_counter - 1)) cv.SaveImage(output_file, prev_img) """movie.set("frames", str(frame_counter)) tree.write("project.xml")""" break img = cv.CreateImage( (int(img_orig.width / 4), int(img_orig.height / 4)), cv.IPL_DEPTH_8U, 3) cv.Resize(img_orig, img, cv.CV_INTER_AREA) if frame_counter == 0: # erster frame cv.SaveImage(os.path.join(OUTPUT_DIR_NAME, "%06d.png" % (0)), img) pixel_count = img.width * img.height prev_img = cv.CreateImage(cv.GetSize(img), cv.IPL_DEPTH_8U, 3) cv.Zero(prev_img) if DEBUG and frame_counter % 2 == 1: cv.ShowImage("win", img) img_hsv = cv.CreateImage(cv.GetSize(img), cv.IPL_DEPTH_8U, 3) cv.CvtColor(img, img_hsv, cv.CV_BGR2HSV) # ##################### # METHOD #1: find the number of pixels that have (significantly) changed since the last frame diff = cv.CreateImage(cv.GetSize(img), cv.IPL_DEPTH_8U, 3) cv.AbsDiff(img_hsv, prev_img, diff) cv.Threshold(diff, diff, 10, 255, cv.CV_THRESH_BINARY) d_color = 0 for i in range(1, 4): cv.SetImageCOI(diff, i) d_color += float(cv.CountNonZero(diff)) / float(pixel_count) if not BLACK_AND_WHITE: d_color = float(d_color / 3.0) # 0..1 # ##################### # METHOD #2: calculate the amount of change in the histograms h_plane = cv.CreateMat(img.height, img.width, cv.CV_8UC1) s_plane = cv.CreateMat(img.height, img.width, cv.CV_8UC1) v_plane = cv.CreateMat(img.height, img.width, cv.CV_8UC1) cv.Split(img_hsv, h_plane, s_plane, v_plane, None) planes = [h_plane, s_plane, v_plane] hist_size = [50, 50, 50] hist_range = [[0, 360], [0, 255], [0, 255]] if not hist: hist = cv.CreateHist(hist_size, cv.CV_HIST_ARRAY, hist_range, 1) cv.CalcHist([cv.GetImage(i) for i in planes], hist) cv.NormalizeHist(hist, 1.0) if not prev_hist: prev_hist = cv.CreateHist(hist_size, cv.CV_HIST_ARRAY, hist_range, 1) # wieso gibt es kein cv.CopyHist()?! cv.CalcHist([cv.GetImage(i) for i in planes], prev_hist) cv.NormalizeHist(prev_hist, 1.0) continue d_hist = cv.CompareHist(prev_hist, hist, cv.CV_COMP_INTERSECT) # combine both methods to make a decision if ((0.4 * d_color + 0.6 * (1 - d_hist))) >= THRESHOLD: if DEBUG: if frame_counter % 2 == 0: cv.ShowImage("win", img) #winsound.PlaySound(soundfile, winsound.SND_FILENAME|winsound.SND_ASYNC) print "%.3f" % ((0.4 * d_color + 0.6 * (1 - d_hist))), "%.3f" % ( d_color), "%.3f" % (1 - d_hist), frame_counter if DEBUG and DEBUG_INTERACTIVE: #if win32api.MessageBox(0, "cut?", "", win32con.MB_YESNO) == 6: #yes # cv.SaveImage(OUTPUT_DIR_NAME + "\\%06d.png" % (frame_counter), img) pass else: cv.SaveImage(OUTPUT_DIR_NAME + "\\%06d.png" % (frame_counter), img) cv.CalcHist([cv.GetImage(i) for i in planes], prev_hist) cv.NormalizeHist(prev_hist, 1.0) # ##################### # METHOD #3: detect series of (almost) black frames as an indicator for "fade to black" average = cv.Avg(v_plane)[0] if average <= 0.6: if not last_frame_black: # possible the start print "start", frame_counter black_frame_start = frame_counter last_frame_black = True else: if last_frame_black: # end of a series of black frames cut_at = black_frame_start + int( (frame_counter - black_frame_start) / 2) print "end", frame_counter, "cut at", cut_at img_black = cv.CreateImage( (img_orig.width / 4, img_orig.height / 4), cv.IPL_DEPTH_8U, 3) cv.Set(img_black, cv.RGB(0, 255, 0)) cv.SaveImage(OUTPUT_DIR_NAME + "\\%06d.png" % (cut_at), img_black) last_frame_black = False cv.Copy(img_hsv, prev_img) frame_counter += 1 if DEBUG: if cv.WaitKey(1) == 27: break if DEBUG: cv.DestroyWindow("win") print "%.2f min" % ((time.time() - t) / 60) #raw_input("- done -") return
def main(): BLACK_AND_WHITE = False THRESHOLD = 0.48 BW_THRESHOLD = 0.4 if len(sys.argv) < 2: print "usage: %s project_dir [bw]"%(sys.argv[0]) return if len(sys.argv) > 2: if sys.argv[2] == "bw": BLACK_AND_WHITE = True THRESHOLD = BW_THRESHOLD print " B/W MODE" tree = utils.open_project(sys.argv, False) if tree == None: return try: os.mkdir(OUTPUT_DIR_NAME) except: pass movie = tree.getroot() file_path = movie.attrib["path"] print "path: %s"%(file_path) if not os.path.isfile(file_path): print "ERROR: file '%s' does not exist"%(file_path) return cap = cv.CreateFileCapture(file_path) print "FPS: %s"%(cv.GetCaptureProperty(cap, cv.CV_CAP_PROP_FPS)) print "Frame width: %s"%(cv.GetCaptureProperty(cap, cv.CV_CAP_PROP_FRAME_WIDTH)) if DEBUG: cv.NamedWindow("win", cv.CV_WINDOW_AUTOSIZE) cv.MoveWindow("win", 200, 200) hist = None prev_hist = None prev_img = None pixel_count = None frame_counter = 0 last_frame_black = False black_frame_start = -1 t = time.time() while 1: img_orig = cv.QueryFrame(cap) if not img_orig: # eof output_file = os.path.join(OUTPUT_DIR_NAME, "%06d.png"% (frame_counter-1)) cv.SaveImage(output_file, prev_img) """movie.set("frames", str(frame_counter)) tree.write("project.xml")""" break img = cv.CreateImage((int(img_orig.width/4), int(img_orig.height/4)), cv.IPL_DEPTH_8U, 3) cv.Resize(img_orig, img, cv.CV_INTER_AREA) if frame_counter == 0: # erster frame cv.SaveImage(os.path.join(OUTPUT_DIR_NAME,"%06d.png" % (0)), img) pixel_count = img.width * img.height prev_img = cv.CreateImage(cv.GetSize(img), cv.IPL_DEPTH_8U, 3) cv.Zero(prev_img) if DEBUG and frame_counter % 2 == 1: cv.ShowImage("win", img) img_hsv = cv.CreateImage(cv.GetSize(img), cv.IPL_DEPTH_8U, 3) cv.CvtColor(img, img_hsv, cv.CV_BGR2HSV) # ##################### # METHOD #1: find the number of pixels that have (significantly) changed since the last frame diff = cv.CreateImage(cv.GetSize(img), cv.IPL_DEPTH_8U, 3) cv.AbsDiff(img_hsv, prev_img, diff) cv.Threshold(diff, diff, 10, 255, cv.CV_THRESH_BINARY) d_color = 0 for i in range(1, 4): cv.SetImageCOI(diff, i) d_color += float(cv.CountNonZero(diff)) / float(pixel_count) if not BLACK_AND_WHITE: d_color = float(d_color/3.0) # 0..1 # ##################### # METHOD #2: calculate the amount of change in the histograms h_plane = cv.CreateMat(img.height, img.width, cv.CV_8UC1) s_plane = cv.CreateMat(img.height, img.width, cv.CV_8UC1) v_plane = cv.CreateMat(img.height, img.width, cv.CV_8UC1) cv.Split(img_hsv, h_plane, s_plane, v_plane, None) planes = [h_plane, s_plane, v_plane] hist_size = [50, 50, 50] hist_range = [[0, 360], [0, 255], [0, 255]] if not hist: hist = cv.CreateHist(hist_size, cv.CV_HIST_ARRAY, hist_range, 1) cv.CalcHist([cv.GetImage(i) for i in planes], hist) cv.NormalizeHist(hist, 1.0) if not prev_hist: prev_hist = cv.CreateHist(hist_size, cv.CV_HIST_ARRAY, hist_range, 1) # wieso gibt es kein cv.CopyHist()?! cv.CalcHist([cv.GetImage(i) for i in planes], prev_hist) cv.NormalizeHist(prev_hist, 1.0) continue d_hist = cv.CompareHist(prev_hist, hist, cv.CV_COMP_INTERSECT) # combine both methods to make a decision if ((0.4*d_color + 0.6*(1-d_hist))) >= THRESHOLD: if DEBUG: if frame_counter % 2 == 0: cv.ShowImage("win", img) #winsound.PlaySound(soundfile, winsound.SND_FILENAME|winsound.SND_ASYNC) print "%.3f" % ((0.4*d_color + 0.6*(1-d_hist))), "%.3f" % (d_color), "%.3f" % (1-d_hist), frame_counter if DEBUG and DEBUG_INTERACTIVE: #if win32api.MessageBox(0, "cut?", "", win32con.MB_YESNO) == 6: #yes # cv.SaveImage(OUTPUT_DIR_NAME + "\\%06d.png" % (frame_counter), img) pass else: cv.SaveImage(os.path.join(OUTPUT_DIR_NAME, "%06d.png" % (frame_counter)), img) cv.CalcHist([cv.GetImage(i) for i in planes], prev_hist) cv.NormalizeHist(prev_hist, 1.0) # ##################### # METHOD #3: detect series of (almost) black frames as an indicator for "fade to black" average = cv.Avg(v_plane)[0] if average <= 0.6: if not last_frame_black: # possible the start print "start", frame_counter black_frame_start = frame_counter last_frame_black = True else: if last_frame_black: # end of a series of black frames cut_at = black_frame_start + int( (frame_counter - black_frame_start) / 2 ) print "end", frame_counter, "cut at", cut_at img_black = cv.CreateImage((img_orig.width/4, img_orig.height/4), cv.IPL_DEPTH_8U, 3) cv.Set(img_black, cv.RGB(0, 255, 0)) cv.SaveImage(os.path.join(OUTPUT_DIR_NAME, "%06d.png" % (cut_at)), img_black) last_frame_black = False cv.Copy(img_hsv, prev_img) frame_counter += 1 if DEBUG: if cv.WaitKey(1) == 27: break if DEBUG: cv.DestroyWindow("win"); print "%.2f min" % ((time.time()-t) / 60) #raw_input("- done -") return
def main(): tree = utils.open_project(sys.argv) if tree == None: return try: os.mkdir(OUTPUT_DIR_NAME) except OSError: pass movie = tree.getroot() file_path = movie.attrib["path"] cap = cv.CreateFileCapture(file_path) cv.QueryFrame(cap) # skip frames in the beginning, if neccessary start_frame = int(movie.attrib["start_frame"]) for i in range(start_frame): cv.QueryFrame(cap) f = open("shots.txt", "r") lines = [line for line in f if line] f.close() t = time.time() w = None h = None #for line in f: for nr, line in enumerate(lines): print(nr + 1), "/", len(lines) #frame_from, frame_to, width, scene_nr = [int(i) for i in line.split("\t")] #width, scene_nr = [int(i) for i in line.split("\t")][2:] start_frame, end_frame, width = [ int(splt) for splt in line.split("\t") ] #width *= STRETCH_FAKTOR faktor = None output_img = None for frame_counter in range(width): #if frame_counter % STRETCH_FAKTOR == 0: # img = cv.QueryFrame(cap) # if not img: # break img = cv.QueryFrame(cap) if not img: break if nr == 0: w = img.width h = img.height if frame_counter == 0: faktor = float(w) / float(width) output_img = cv.CreateImage((width, h), cv.IPL_DEPTH_8U, 3) col_nr = faktor * (frame_counter + 0.5) col_nr = int(math.floor(col_nr)) #print frame_counter, width, col_nr, w col = cv.GetCol(img, col_nr) for i in range(h): cv.Set2D(output_img, i, frame_counter, cv.Get1D(col, i)) #return cv.SaveImage( os.path.join(OUTPUT_DIR_NAME, "shot_slitscan_%03d_%d.png" % (nr + 1, start_frame)), output_img) print "%.2f min" % ((time.time() - t) / 60) #raw_input("- done -") return
def main(): global startframe tree = utils.open_project(sys.argv) if tree == None: return os.chdir("shot_slitscans") '''cv.NamedWindow("win", cv.CV_WINDOW_AUTOSIZE) cv.MoveWindow("win", 500, 200) cv.SetMouseCallback("win", mouse_callback)''' bg_img = cv.CreateImage((576, 576), cv.IPL_DEPTH_8U, 1) #cv.Set(bg_img, (180)) files = sorted( glob.glob("*.png") ) print(files) i = 0 while i < len(files): file = files[i] startframe = int( file.split("_")[3].split(".")[0] ) print(startframe) cap = cv.CreateFileCapture(file) img = cv.QueryFrame(cap) win_name = "%d" % (int(float(i+1)*100.0/len(files))) + "% - " + file cv.NamedWindow(win_name, cv.CV_WINDOW_AUTOSIZE) cv.MoveWindow(win_name, 500, 200) cv.SetMouseCallback(win_name, mouse_callback) cv.ShowImage(win_name, bg_img) cv.ShowImage(win_name, img) key = cv.WaitKey(0) print(key) if key in [65363]: # right arrow i += 1 elif key in [65361]: # left arrow i -= 1 if i < 0: i = 0 elif key in [27, 1048603]: # ESC break elif key in [65365]: # page up i -= 100 if i < 0: i = 0 elif key in [65366]: # page down i += 100 else: print("Unknown key code: {}".format(key)) cv.DestroyWindow(win_name) #print("System input arguments: " + sys.argv[0] + " " + sys.argv[1]) os.chdir("/vagrant") # Now that we're using Vagrant to wrapup everything, this should work to get to the root of the project directory #os.system("ls -a") os.system("python 02_2_save-shots.py \"" + sys.argv[1] + "\"")
def main(): tree = utils.open_project(sys.argv) if tree == None: return try: os.mkdir(OUTPUT_DIR_NAME) except OSError: pass movie = tree.getroot() file_path = movie.attrib["path"] cap = cv.CreateFileCapture(file_path) cv.QueryFrame(cap) # skip frames in the beginning, if neccessary start_frame = int( movie.attrib["start_frame"] ) for i in range(start_frame): cv.QueryFrame(cap) f = open("shots.txt", "r") lines = [line for line in f if line] f.close() t = time.time() w = None h = None #for line in f: for nr, line in enumerate(lines): print (nr+1), "/", len(lines) #frame_from, frame_to, width, scene_nr = [int(i) for i in line.split("\t")] #width, scene_nr = [int(i) for i in line.split("\t")][2:] start_frame, end_frame, width = [int(splt) for splt in line.split("\t")] #width *= STRETCH_FAKTOR faktor = None output_img = None for frame_counter in range(width): #if frame_counter % STRETCH_FAKTOR == 0: # img = cv.QueryFrame(cap) # if not img: # break img = cv.QueryFrame(cap) if not img: break if nr == 0: w = img.width h = img.height if frame_counter == 0: faktor = float(w) / float(width) output_img = cv.CreateImage((width, h), cv.IPL_DEPTH_8U, 3) col_nr = faktor * (frame_counter+0.5) col_nr = int( math.floor(col_nr) ) #print frame_counter, width, col_nr, w col = cv.GetCol(img, col_nr) for i in range(h): cv.Set2D(output_img, i, frame_counter, cv.Get1D(col, i)) #return cv.SaveImage(os.path.join(OUTPUT_DIR_NAME,"shot_slitscan_%04d_%06d.png" % (nr+1, start_frame)), output_img) print("%.2f min" % ((time.time()-t) / 60)) #raw_input("- done -") return