Делаем папку черно-белой с питоном
У меня есть папка JPEG. Они все RGB. Я хочу преобразовать их все в оттенки серого с помощью scikit-image.
import glob
from skimage.color import rgb2gray
from skimage.io import imread, imsave
from skimage.filters import threshold_otsu
from skimage import img_as_uint
import os
from PIL import Image
list = os.chdir("C:/Users/Images/RGB")
for file in list:
image1 = Image.open(file)
image_converted = color.rgb2gray(image1)
io.imsave("C:/Users/Images/Greyscale", image_converted)
Я получаю сообщение об ошибке:
AttributeError: 'JpegImageFile' object has no attribute 'ndim'
Что я здесь делаю неправильно?
2 ответа
Попробуйте этот код:
from skimage import io, color
import os
import imghdr
source = r'C:\Users\Images\RGB'
destination = r'C:\Users\Images\Greyscale'
image_files = [os.path.join(root, filename)
for root, dirs, files in os.walk(source)
for filename in files
if imghdr.what(os.path.join(root, filename))]
for fn in image_files:
rgb = io.imread(fn)
grey = color.rgb2gray(rgb)
head, tail = os.path.split(fn)
io.imsave(os.path.join(destination, tail), grey)
Заметить, что image_files
список, содержащий полный путь ко всем файлам изображений, найденным в source
и его подкаталоги (рекурсивно). Полный список обнаруженных типов изображений можно найти в документации модуля imghdr.
Похоже, вы не запускаете скрипт в каталоге, где находятся файлы.
Либо используйте полный путь к файлу для Image.open(file)
или же os.chdir
в "C:/Users/Images/RGB"
,