[Python] How should I put the dataset folder path in this python code

Discussão em 'Python' iniciado por Stack, Janeiro 20, 2025.

  1. Stack

    Stack Membro Participativo

    So I'm working on this sign language gesture recognition python project from git hub. I followed the read me file and saved (in the project's root folder) all the dataset files in two seperate folders named as train_videos and test_videos for machine learning.

    Now I'm getting the following error:

    usage: video-to-frame.py [-h] gesture_folder target_folder
    video-to-frame.py: error: the following arguments are required: gesture_folder, target_folder


    Following is the code from "video-to-frame.py" file. I can't figure out where to put the paths of my data set fodlers.

    import cv2
    import os
    import pickle
    from os.path import join, exists
    import handsegment as hs
    import argparse
    from tqdm import tqdm

    hc = []


    def convert(gesture_folder, target_folder):
    rootPath = os.getcwd()
    majorData = os.path.abspath(target_folder)

    if not exists(majorData):
    os.makedirs(majorData)

    gesture_folder = os.path.abspath(gesture_folder)

    os.chdir(gesture_folder)
    gestures = os.listdir(os.getcwd())

    print("Source Directory containing gestures: %s" % gesture_folder)
    print("Destination Directory containing frames: %s\n" % majorData)

    for gesture in tqdm(gestures, unit='actions', ascii=True):
    gesture_path = os.path.join(gesture_folder, gesture)
    os.chdir(gesture_path)

    gesture_frames_path = os.path.join(majorData, gesture)
    if not os.path.exists(gesture_frames_path):
    os.makedirs(gesture_frames_path)

    videos = os.listdir(os.getcwd())
    videos = [video for video in videos if(os.path.isfile(video))]

    for video in tqdm(videos, unit='videos', ascii=True):
    name = os.path.abspath(video)
    cap = cv2.VideoCapture(name) # capturing input video
    frameCount = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
    lastFrame = None

    os.chdir(gesture_frames_path)
    count = 0

    # assumption only first 200 frames are important
    while count < 201:
    ret, frame = cap.read() # extract frame
    if ret is False:
    break
    framename = os.path.splitext(video)[0]
    framename = framename + "_frame_" + str(count) + ".jpeg"
    hc.append([join(gesture_frames_path, framename), gesture, frameCount])

    if not os.path.exists(framename):
    frame = hs.handsegment(frame)
    frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    lastFrame = frame
    cv2.imwrite(framename, frame)

    if cv2.waitKey(1) & 0xFF == ord('q'):
    break
    count += 1

    # repeat last frame until we get 200 frames
    while count < 201:
    framename = os.path.splitext(video)[0]
    framename = framename + "_frame_" + str(count) + ".jpeg"
    hc.append([join(gesture_frames_path, framename), gesture, frameCount])
    if not os.path.exists(framename):
    cv2.imwrite(framename, lastFrame)
    count += 1

    os.chdir(gesture_path)
    cap.release()
    cv2.destroyAllWindows()

    os.chdir(rootPath)


    if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='Extract Individual Frames from gesture videos.')
    parser.add_argument('gesture_folder', help='Path to folder containing folders of videos of different gestures.')
    parser.add_argument('target_folder', help='Path to folder where extracted frames should be kept.')
    args = parser.parse_args()
    convert(args.gesture_folder, args.target_folder)


    This is the link to project's git hub repository.

    Continue reading...

Compartilhe esta Página