Я пытаюсь рекурсивно преобразовать все файлы в папке img
в оттенки серого и сохранить результаты в папке imgGray
,
Но в папке назначения:
Я получение только первого изображения, преобразованного из каждого подкаталога (A,B ...
), вот как выглядит дерево:
__img__A____A1.jpg
| | |__A2.jpg
| | .
| | .
| | .__An.jpg
| |
| |___B__B1.jpg
| | |__B2.jpg
| | .
| | .
| | .__Bn.jpg
|
|__imgGray__A__A1.jpg
|
|
|______B__B1.jpg
Я не уверен, правильно ли я использую функцию glob.glob(os.path.join(x[0],"*.jpg"))
? или какая часть кода неверна?
Ниже приведен код, который я подготовил для этой задачи:
import cv2
import os,glob,re
from os import listdir,makedirs
from os.path import isfile,join
pwd = os.getcwd()
path = os.path.join(pwd,'img') # Source Folder
dstpath = os.path.join(pwd,'imgGray') # Destination Folder
for x in os.walk(path):
y = x[0][len(path):]
subFolderDest = dstpath+y
try:
os.mkdir(subFolderDest)
except:
print ("Directory already exist, images will be written in same subfolder:"+subFolderDest)
variable = input('continue? y/n: ')
if variable == 'n':
exit(0)
# Folder won't used
files = [f for f in listdir(x[0]) if isfile(join(x[0],f))]
print(x[0]+str(len(files)))
for image in files:
try:
img = cv2.imread(os.path.join(x[0],image))
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
subFolderDest = join(subFolderDest,image)
cv2.imwrite(subFolderDest,gray)
except:
print ("{} is not converted".format(image))
for fil in glob.glob(os.path.join(x[0],"*.jpg")):
try:
image = cv2.imread(fil)
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # convert to greyscale
cv2.imwrite(os.path.join(subFolderDest,fil),gray_image)
except:
print('{} is not converted')