我正在尝试处理一个原始数据集自选文件夹,并将输出图像保存到目标文件夹中。
例如:
video_0001中的原始数据集应该以与video_0001相同的文件夹名保存在目标目录中。
我尝试了以下代码,但由于数据集包含200多个文件夹
以下是我想出的
directory = "C:\\Users\\dataset\\distdir"
save_directory1 = "C:\\Users\\Desktop\\dataset\\distdir\\save_img\\Folder1"
save_directory2 = "C:\\Users\\Desktop\\dataset\\distdir\\save_img\\Folder2"
height = 512
width = 512
for root, dirs, files in os.walk(directory):
for folder_name in dirs:
cv2.imwrite(os.path.join(save_directory1, file), img)
cv2.imwrite(os.path.join(save_directory2, file), img)
for file in files:
img = cv2.imread(os.path.join(root,file))
print(img)
img = cv2.resize(img, (height, width))
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
img = cv2.normalize(img, None, 0, 255, cv2.NORM_MINMAX)
print(img.shape)
但是输出结果是,在文件夹1和文件夹2中只有最后一个图像,并且这个解决方案是不可行的,因为我有超过200个文件夹。
如有任何想法,将不胜感激。
发布于 2022-05-09 02:28:44
您需要将这两个for循环组合起来。否则,您将一次又一次地重写变量img和文件,并且只保存最后处理的img。
尝试:
directory = "C:\\Users\\dataset\\distdir"
for root, dirs, files in os.walk(directory):
for file in files:
img = cv2.imread(os.path.join(root, file))
img = cv2.resize(img, (height, width))
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
img = cv2.normalize(img, None, 0, 255, cv2.NORM_MINMAX)
folder = os.path.splitext(file)[0]
end_of_path = os.path.join(folder, file)
cv2.imwrite(os.path.join(directory, end_of_path), img)
发布于 2022-05-09 02:44:27
您可以首先定义预处理逻辑。
H 210G 211
例如,这是原始文件夹的树目录。
-dataset
- -folder_0001
- - -image_01.jpeg
- - -image_02.jpeg
- -folder_0002
- - -image_01.jpeg
- - -image_02.jpeg
...
- -folder_0200
- - -image_01.jpeg
- - -image_02.jpeg
import os
import cv2
input_dir = 'dataset'
output_dir = 'output'
height = 512
width = 512
for root, dirs, files in os.walk(input_dir):
for file in files:
# Create output directory
output_dir_path = os.path.join(output_dir, os.path.split(os.path.dirname(os.path.join(root, file)))[-1])
if not os.path.exists(output_dir_path):
os.makedirs(output_dir_path)
# Do preprocessing image
img = cv2.imread(os.path.join(root, file))
img = cv2.resize(img, (height, width))
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
img = cv2.normalize(img, None, 0, 255, cv2.NORM_MINMAX)
# Save it to the output directory
cv2.imwrite(os.path.join(output_dir_path, file), img)
使用此解决方案,您可以处理200个子文件夹。
https://stackoverflow.com/questions/72166298
复制相似问题