Делаем папку черно-белой с питоном - PullRequest
0 голосов
/ 22 мая 2018

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

0 голосов
/ 23 мая 2018

Попробуйте этот код:

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 .

0 голосов
/ 22 мая 2018

Похоже, вы не запускаете скрипт в каталоге, в котором находятся файлы.

Либо используйте полный путь к файлу для Image.open(file) или os.chdir в "C:/Users/Images/RGB".

...