如何循环播放视频并将信息写入单独的文件夹?
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);
}
}
我有一个包含多个文件夹的主文件夹,包括带有多个子文件夹的输入,每个子文件夹中都有一个视频。我遍历输入(它的子文件夹)并处理它们。我希望将处理后的信息写入输出文件。目前一切都只写在一个输出文件夹中。但我想要一个像这样的输出文件夹,我可以在其中有多个子文件夹来写入与每个视频相关的处理信息。
我现在在做什么:
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);
}
}