Делаем папку черно-белой с питоном

У меня есть папка 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",

Другие вопросы по тегам