1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
#!/usr/bin/python3
import os
import sys
if len(sys.argv) <= 1:
sys.stderr.write('A script to blend two sets of movie frames together with a desired overlap.\n')
sys.stderr.write('The input arguments are two folders containing the movie frames (eg. output from the MRview screenshot tool), and the desired number of overlapping frames.\n')
sys.stderr.write('eg: blend folder1 folder2 20 output_folder\n')
sys.exit(1)
input_folder1 = sys.argv[1]
input_folder2 = sys.argv[2]
file_list1 = sorted(os.listdir(input_folder1))
file_list2 = sorted(os.listdir(input_folder2))
num_overlap = int(sys.argv[3])
output_folder = sys.argv[4]
if not os.path.exists(output_folder):
os.mkdir(output_folder)
total_num_output_frames = len(file_list1) + len(file_list2) - num_overlap
for i in range(total_num_output_frames):
file_name = 'frame' + '%0*d' % (5, i) + '.png'
if i <= len(file_list1) - num_overlap:
os.system('cp -L ' + input_folder1 + '/' + file_list1[i] + ' ' + output_folder + '/' + file_name)
if len(file_list1) - num_overlap < i < len(file_list1):
i2 = i - (len(file_list1) - num_overlap) - 1
blend_amount = 100 * float(i2 + 1) / float(num_overlap)
os.system('convert ' + input_folder1 + '/' + file_list1[i] + ' ' + input_folder2 + '/' + file_list2[i2] + ' -alpha on -compose blend -define compose:args=' + str(blend_amount) + ' -gravity South -composite ' + output_folder + '/' + file_name)
if i >= (len(file_list1)):
i2 = i - (len(file_list1) - num_overlap) - 1
os.system('cp -L ' + input_folder2 + '/' + file_list2[i2] + ' ' + output_folder + '/' + file_name)
|