如何循环播放视频并将信息写入单独的文件夹?

how to loop over the videos and write the information in sepreate folders?

我有一个包含多个文件夹的主文件夹,包括带有多个子文件夹的输入,每个子文件夹中都有一个视频。我遍历输入(它的子文件夹)并处理它们。我希望将处理后的信息写入输出文件。目前一切都只写在一个输出文件夹中。但我想要一个像这样的输出文件夹,我可以在其中有多个子文件夹来写入与每个视频相关的处理信息。

我现在在做什么:

mainfolder
    ├── input
    │   │   
    │   ├── sub-folder1/ video1.mp4
    │   ├── sub-folder2/ video2.mp4
    │   └── sub-folder3/ video3.mp4
    |
    ├── output/ everything get over written here
    │  
    │
    │
    ├── main_code.py

我想做的事情:

mainfolder
├── input
│   │   
│   ├── sub-folder1/ video1.mp4
│   ├── sub-folder2/ video2.mp4
│   └── sub-folder3/ video3.mp4
├── output
│   ├── sub-folder1/ processed-info(video1)
│   ├── sub-folder2/ processed-info(video2)
│   └── sub-folder3/ processed-info(video3)
│
│
├── main_code.py

对子文件夹下的每个视频进行一些处理后,我想将帧写入与每个子文件夹相同的位置。

这是子文件夹的循环,每个子文件夹中都有一个视频:

 mainFolder= 'input'
myFolders= os.listdir(mainFolder)

for folder in myFolders:
    path=mainFolder+ '/'+ folder
    print(path)
    vidoes=[]
    myList=os.listdir(path)

    for vidN in myList:
        vs=cv2.VideoCapture(f'{path}/{vidN}')
        vidoes.append(vs)

处理完每个视频后,我将输出的帧、.txt 文件和处理后的视频写入输出文件夹。这会导致覆盖问题。如何在输出文件夹中创建与视频同名的文件夹以防止覆盖?

directory_name1 = os.path.join(os.getcwd(),'output','frames1')
                        if not os.path.exists(directory_name1):
                            os.makedirs(directory_name1)

                        frame_path1= os.path.join(directory_name1,f"frame1-{frameIndex}.png")
                        cv2.imwrite(frame_path1,frame)



output_string=f"{ID}, {count} \n"
                            print(output_string)
                            with open(outputFilename, 'a') as file_writer:
                                file_writer.write(output_string)




# check if the video writer is None
        if writer is None:
            # initialize our video writer
            fourcc = cv2.VideoWriter_fourcc(*"MJPG")

            directory_out= 'output'

            if not os.path.exists(directory_out):
                os.makedirs(directory_out)

            writer = cv2.VideoWriter(os.path.join(directory_out,'out.avi'), fourcc, 120,
                                     (frame.shape[1], frame.shape[0]), True)

我可以循环播放视频文件,但是当我尝试写入输出时它会覆盖。我的问题是如何将每个视频的输出定向到单独的子文件夹中?

这里有一个小程序来演示修改 filename.We 必须双重转义 .作为 separateur.Of 当然你可以根据 OS 在“/”或“”上分开并用新的子文件夹重建文件名,你必须 create.It 可以完成但会复杂多了。

class FileName {
        public static void main(String[] args) {
                String fileName = "/path/to/my/file/video.mp4";
                String[] parts = fileName.split("\.");
                String newFileName = parts[0] + ".proc." + parts[1];
                System.out.println(newFileName);
                }
}