Currently working on extracting frames from videos and have noticed that the images get overwritten. Would be nice to create a folder for each of the captured frames but I'm unsure how to do that.
data_folder = r"C:\Users\jagac\Downloads\Data"
sub_folder_vid = "hmdb51_org"
path2videos = os.path.join(data_folder, sub_folder_vid)
for path, subdirs, files in os.walk(path2videos):
for name in files:
vids = os.path.join(path, name)
cap = cv2.VideoCapture(vids)
i = 0
frame_skip = 10
frame_count = 0
while(cap.isOpened()):
ret, frame = cap.read()
if ret == False:
break
if i > frame_skip - 1:
frame_count = 1
path2store= r"C:\Users\jagac\OneDrive\Documents\CSC578\final\HumanActionClassifier\images"
os.makedirs(path2store, exist_ok= True)
path2img = os.path.join(path2store, 'test_' str(frame_count*frame_skip) ".jpg")
cv2.imwrite(path2img, frame)
i = 0
continue
i = 1
cap.release()
cv2.destroyAllWindows()
CodePudding user response:
The problem is that you're not incorporating name
into your path, so each video is overwriting the previous. You can either add the file name to path2img
, or add name
to the path2store
variable before you make the directory.