Filter frames by filesize #1
This commit is contained in:
parent
0e477519fe
commit
7d7ea1196f
1 changed files with 56 additions and 0 deletions
56
src/autophotographer/autophotographer.py
Normal file
56
src/autophotographer/autophotographer.py
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
import cv2
|
||||||
|
import sys
|
||||||
|
import argparse
|
||||||
|
import os
|
||||||
|
import pathlib
|
||||||
|
|
||||||
|
# Process arguments
|
||||||
|
def parse_arguments(argv=None):
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
parser.add_argument('-i', '--input', dest='inputfile', type=pathlib.Path, help='Specify a video file')
|
||||||
|
parser.add_argument('-o', '--output', dest='outputfolder', type=pathlib.Path, help='Specify a folder to save frames to')
|
||||||
|
return parser.parse_args()
|
||||||
|
|
||||||
|
# Convert video to frames
|
||||||
|
def video_to_frames():
|
||||||
|
capture = cv2.VideoCapture(str(inputfile))
|
||||||
|
success,image = capture.read()
|
||||||
|
count = 0
|
||||||
|
while success:
|
||||||
|
outputfile = outputfolder + "/frame%d.jpg" % count
|
||||||
|
print(outputfile)
|
||||||
|
cv2.imwrite(outputfile, image)
|
||||||
|
success,image = capture.read()
|
||||||
|
count +=1
|
||||||
|
|
||||||
|
# Shrink set based on filesize
|
||||||
|
def display_file_sizes():
|
||||||
|
filesizes = []
|
||||||
|
for filename in os.listdir(outputfolder):
|
||||||
|
filepath = outputfolder + "/" + filename
|
||||||
|
filesize = os.path.getsize(filepath)
|
||||||
|
print(filepath + ": " + str(filesize))
|
||||||
|
filesizes.append(filesize)
|
||||||
|
# work out average
|
||||||
|
average = sum(filesizes)/len(filesizes)
|
||||||
|
print ("Average is: " + str(average))
|
||||||
|
# delete files below average
|
||||||
|
count = 0
|
||||||
|
for filename in os.listdir(outputfolder):
|
||||||
|
filepath = outputfolder + "/" + filename
|
||||||
|
if filesizes[count] < average:
|
||||||
|
# print(filepath + ": " + str(filesizes[count]))
|
||||||
|
os.remove(filepath)
|
||||||
|
count += 1
|
||||||
|
|
||||||
|
#def remove_similar_frames():
|
||||||
|
# sad
|
||||||
|
|
||||||
|
args = parse_arguments()
|
||||||
|
inputfile = str(args.inputfile.absolute())
|
||||||
|
outputfolder = str(args.outputfolder.absolute())
|
||||||
|
|
||||||
|
# Convert video to frames
|
||||||
|
video_to_frames()
|
||||||
|
|
||||||
|
display_file_sizes()
|
Reference in a new issue