#python #image #image-processing #python-imaging-library #tiff
#python #изображение #обработка изображений #python-imaging-library #tiff
Вопрос:
У меня есть набор данных изображений в формате tiff, которые необходимо разложить. В каждом файле 50 кадров, и в настоящее время я разлагаю их один за другим, но по сравнению с количеством изображений, которые у меня есть, потребуется много времени, чтобы разложить каждое из них. Моя цель состоит в том, чтобы для каждого файла tiff внутри папки я хотел бы разложить и сохранить их в отдельной папке, где каждое изображение tiff всегда будет содержать 50 кадров, например:
внутри C:Datasettiff-images
у меня есть tiff-image1, tiff-image2, tiffimage3, tiffimage4.
Все еще внутри того же каталога у меня есть папки: tiff-image1, tiff-image2, tiff-image3, tiff-image4.
В принципе, я хотел бы просто перебрать как можно больше изображений формата tiff внутри каталога и разложить их внутри соответствующей папки, создав папку на случай, если ее нет.
Способ, который я пытаюсь использовать прямо сейчас, не совсем оптимален, и на выполнение этого процесса у меня уйдет много времени:
imagepath = "tiff-image1.tif"
path = "C:/Dataset/tiff-images/" imagepath
img = Image.open(path)
for i in range(50):
try:
img.seek(i)
img.save('C:/Dataset/tiff-images/tiff-image1-folder1/tiff-image1-decomp.tif%s.tif'%(i,))
except EOFError:
break
imagepath = "tiff-image2.tif"
path = "C:/Dataset/tiff-images/" imagepath
img = Image.open(path)
for i in range(50):
try:
img.seek(i)
img.save('C:/Dataset/tiff-images/tiff-image2-folder2/tiff-image2-decomp.tif%s.tif'%(i,))
except EOFError:
break
imagepath = "tiff-image3.tif"
path = "C:/Dataset/tiff-images/" imagepath
img = Image.open(path)
for i in range(50):
try:
img.seek(i)
img.save('C:/Dataset/tiff-images/tiff-image3-folder3/tiff-image3-decomp.tif%s.tif'%(i,))
except EOFError:
break
imagepath = "tiff-image4.tif"
path = "C:/Dataset/tiff-images/" imagepath
img = Image.open(path)
for i in range(50):
try:
img.seek(i)
img.save('C:/Dataset/tiff-images/tiff-image4-folder4/tiff-image4-decomp.tif%s.tif'%(i,))
except EOFError:
break
Ответ №1:
Вы можете использовать os
модуль для такого рода автоматизации. Проверьте это:
import os
from PIL import Image
# enter the main folder path here
path = './'
lsdir = os.listdir(path)
for f in lsdir:
if os.path.isfile(f):
file, ext = os.path.splitext(f)
if ext in ['.tif', '.tiff']:
fldr = os.path.join(path, file)
if not os.path.isdir(fldr):
os.mkdir(fldr)
imgpath = os.path.join(path, f)
img = Image.open(imgpath)
for i in range(50):
try:
img.seek(i)
img.save(f'{fldr}/decomp{i}.tif')
except EOFError:
break
Комментарии:
1. os или glob, если вам нужно отфильтровать только изображения и для периодического поиска.