我应该如何在这段python代码中放置dataset文件夹路径

我应该如何在这段python代码中放置dataset文件夹路径,python,path,gesture-recognition,Python,Path,Gesture Recognition,所以我正在GitHub上做这个手语手势识别python项目。 我遵循read me文件,将所有数据集文件保存在两个单独的文件夹中(在项目的根文件夹中),分别命名为train_videos和test_videos for machine learning 现在我得到了以下错误: usage: video-to-frame.py [-h] gesture_folder target_folder video-to-frame.py: error: the following arguments ar

所以我正在GitHub上做这个手语手势识别python项目。 我遵循read me文件,将所有数据集文件保存在两个单独的文件夹中(在项目的根文件夹中),分别命名为train_videos和test_videos for machine learning

现在我得到了以下错误:

usage: video-to-frame.py [-h] gesture_folder target_folder
video-to-frame.py: error: the following arguments are required: gesture_folder, target_folder
下面是“video to frame.py”文件中的代码。 我不知道把我的数据集fodler的路径放在哪里

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)
导入cv2
导入操作系统
进口泡菜
从os.path导入联接,存在
作为hs导入手段
导入argparse
从TQM导入TQM
hc=[]
def转换(手势文件夹、目标文件夹):
rootPath=os.getcwd()
majorData=os.path.abspath(目标文件夹)
如果不存在(majorData):
os.makedirs(majorData)
手势文件夹=os.path.abspath(手势文件夹)
chdir(手势_文件夹)
手势=os.listdir(os.getcwd())
打印(“包含手势的源目录:%s”%s\u文件夹)
打印(“包含帧的目标目录:%s\n”%majorData)
对于TQM中的手势(手势,单位=动作,ascii=真):
手势\路径=os.path.join(手势\文件夹,手势)
chdir(手势和路径)
手势\u帧\u路径=os.path.join(主数据,手势)
如果操作系统路径不存在(手势\u帧\u路径):
os.makedirs(手势\u帧\u路径)
videos=os.listdir(os.getcwd())
视频=[视频中视频的视频如果(os.path.isfile(视频))]
对于TQM中的视频(视频,单位='videos',ascii=True):
name=os.path.abspath(视频)
cap=cv2.视频捕获(名称)#捕获输入视频
frameCount=int(cap.get(cv2.cap\u PROP\u FRAME\u COUNT))
lastFrame=无
chdir(手势\帧\路径)
计数=0
#假设只有前200帧是重要的
当计数小于201时:
ret,frame=cap.read()#提取帧
如果ret为假:
打破
framename=os.path.splitext(视频)[0]
framename=framename+“\u frame\u”+str(计数)+”.jpeg”
追加([join(手势、帧、路径、帧名)、手势、帧计数])
如果不存在os.path.exists(framename):
帧=hs.手段(帧)
frame=cv2.CVT颜色(frame,cv2.COLOR\u BGR2GRAY)
最后一帧=帧
cv2.imwrite(框架名称,框架)
如果cv2.waitKey(1)&0xFF==ord('q'):
打破
计数+=1
#重复上一帧,直到得到200帧
当计数小于201时:
framename=os.path.splitext(视频)[0]
framename=framename+“\u frame\u”+str(计数)+”.jpeg”
追加([join(手势、帧、路径、帧名)、手势、帧计数])
如果不存在os.path.exists(framename):
cv2.imwrite(framename,lastFrame)
计数+=1
chdir(手势和路径)
第1章释放()
cv2.destroyAllWindows()
os.chdir(根路径)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
parser=argparse.ArgumentParser(description='从手势视频中提取单个帧〕
parser.add_参数('signature_folder',help='Path to folder,其中包含不同手势的视频文件夹。'))
parser.add_参数('target_folder',help='应该保存提取帧的文件夹的路径!')
args=parser.parse_args()
转换(args.signature\u文件夹,args.target\u文件夹)

是指向项目git hub存储库的链接

因此,我对python比较陌生,但您共享的代码片段是一个函数,其中包含手势文件夹和目标文件夹的输入,因此您需要查看函数convert()在整个代码中的调用位置,然后检查函数调用中的输入

因此,如果看起来像这样,则替换函数调用中的路径

convert("C:\\User\gesturefolder","C:\\User\targetfolder" )
但如果是这样的话

convert(gf,tf)
然后,您需要反向工作,找到声明gf和tf的位置,并替换那里的路径

编辑:

parser.add_argument('C:\\User\gesturefolder', help='Path to folder containing folders of videos of different gestures.')
parser.add_argument('C:\\User\targetfolder', help='Path to folder where extracted frames should be kept.')
如果用路径替换此项无效,请尝试用\或替换所有反斜杠/

EDIT2:

因此,我查看了Github,发现在调用python代码时提供了路径

video-to-frame.py [-h] gesture_folder target_folder
你试过这样的东西吗

gesture_folder="C:\\..." #gesture folder path
target_folder="C:\\..." #target folder path

video-to-frame.py [-h] gesture_folder target_folder
EDIT3:

parser.add_argument('C:\\User\gesturefolder', help='Path to folder containing folders of videos of different gestures.')
parser.add_argument('C:\\User\targetfolder', help='Path to folder where extracted frames should be kept.')
我能想到的最后一个建议是,因为您只是直接运行代码,而不是调用它,然后在代码的开头定义导入和hc之间的路径

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

gesture_folder="C:\\..." #gesture folder path
target_folder="C:\\..." #target folder path

hc = []

因此,我对python比较陌生,但您共享的代码片段是一个函数,其中包含手势文件夹和目标文件夹的输入,因此,您需要查看函数convert()在整个代码中的调用位置,然后检查函数调用中的输入

因此,如果看起来像这样,则替换函数调用中的路径

convert("C:\\User\gesturefolder","C:\\User\targetfolder" )
但如果是这样的话

convert(gf,tf)
然后,您需要反向工作,找到声明gf和tf的位置,并替换那里的路径

编辑:

parser.add_argument('C:\\User\gesturefolder', help='Path to folder containing folders of videos of different gestures.')
parser.add_argument('C:\\User\targetfolder', help='Path to folder where extracted frames should be kept.')
如果用路径替换此项无效,请尝试用\或替换所有反斜杠/

EDIT2:

因此,我查看了Github,发现在调用python代码时提供了路径

video-to-frame.py [-h] gesture_folder target_folder
你试过这样的东西吗

gesture_folder="C:\\..." #gesture folder path
target_folder="C:\\..." #target folder path

video-to-frame.py [-h] gesture_folder target_folder
EDIT3:

parser.add_argument('C:\\User\gesturefolder', help='Path to folder containing folders of videos of different gestures.')
parser.add_argument('C:\\User\targetfolder', help='Path to folder where extracted frames should be kept.')
我能想到的最后一个建议是,因为您只是直接运行代码,而不是调用它,然后在代码的开头定义导入和hc之间的路径

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

gesture_folder="C:\\..." #gesture folder path
target_folder="C:\\..." #target folder path

hc = []

该函数在我已经共享的代码段末尾被调用,它使用参数输入函数的周长。我确实试着把我的文件夹路径放在那里,但没有用:(没有滚动很远。)