首先,这是我的代码:
import cv2
import os,errno
from os.path import expanduser
from datetime import datetime
import glob
import numpy as np
##################### Creating folder & subfolders #####################
b_temp_folder = 'b_temp'
c_path = os.path.join('C:\', b_temp_folder)
try:
c_dir = os.mkdir(c_path)
except OSError as e:
if e.errno != errno.EEXIST:
raise
now = datetime.now()
id_folder = now.strftime('%Y%m%d-%H%M%S-%f')
b_path = os.path.join('C:\b_temp\',id_folder)
b_dir = os.mkdir(b_path)
##################### Images processing #####################
for img in glob.glob('C:\Users\User\Desktop\Images\*.tif'):
cv_img = cv2.imread(img)
cv_show = cv2.imshow('img',cv_img)
cv2.waitKey(0)
在第一部分中,正在创建一些文件夹。首先是"C:\"中的一个文件夹,其中是一个以日期时间作为名称的文件夹。这些最后是每次执行代码时创建的,因此它们是唯一的(按毫秒排序(。
运行for
将一次显示所有图像。
问题是:如何将每张图像发送到它的唯一文件夹?我的意思是,第一个图像到第一个唯一文件夹,依此类推。
按照逻辑,每次运行所有代码时都会创建文件夹(一次一个文件夹(。相反,图像将在同一实例中迭代。 我该如何修改?
PS - 如您所见,我在 C 驱动器中创建了这个临时文件夹。我的计划是使这段代码有点跨平台。我尝试了os.path.expanduser,但它似乎不起作用。根本没有创建任何文件夹...有人知道为什么吗?
谢谢
这是我所做的。该代码创建一个主文件夹,一个主文件夹内的唯一文件夹,并立即传输一个文件。
import cv2
import os,errno
from os.path import expanduser
from datetime import datetime
import glob
import numpy as np
import shutil
print('ncreating main folder (temp) - "b_temp" IN C: n')
b_temp_folder = 'b_temp'
c_path = os.path.join('C:\', b_temp_folder)
try:
c_dir = os.mkdir(c_path)
except OSError as e:
if e.errno != errno.EEXIST:
raise
print('creating unique folder in main folder - "id_folder" IN "b_temp" n')
now = datetime.now()
id_folder = now.strftime('%Y%m%d-%H%M%S-%f')
b_path = os.path.join('C:\b_temp\',id_folder)
b_dir = os.mkdir(b_path)
print('moving image to unique folder n')
idx = 0
for img in glob.glob('C:\Users\User\Desktop\Images\' + str(idx) + '*.tif'):
cv_img = cv2.imread(img)
idx+=1
shutil.move(img, b_path)
现在,有人知道如何使所有代码更加跨平台?我把所有文件都放在 C:\ 中,但这似乎不是一个好的解决方案......
我建议在 for 循环本身中创建文件夹。您将一次访问一个图像和一个文件夹(如果这是我从您的描述中理解的(。
for img in glob.glob('C:\Users\User\Desktop\Images\*.tif'):
cv_img = cv2.imread(img)
cv_show = cv2.imshow('img',cv_img)
now = datetime.now()
id_folder = now.strftime('%Y%m%d-%H%M%S-%f')
b_path = os.path.join('C:\b_temp\',id_folder)
b_dir = os.mkdir(b_path)
shutil.move(img,
b_path)
更新了代码。 来自"img"路径的图像文件将存储在b_path中。它对我有用。