Изобразите изменение размера черно-белого изображения с помощью Fastai - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь крапировать (снизить качество изображения) черно-белые изображения с помощью библиотеки Fastai, однако, с текущим набором кода крапирования, он конвертируется в формат RGB, а затем выдает ошибку при расчете SSIM (несоответствие цветовых каналов) , Я попытался изменить преобразование в черно-белое, задав «L» и «1» и изменив BILINEAR на NEAREST в качестве параметра в следующем фрагменте кода, но это дало мне ошибку, которую вы можете найти в последующем скриншоте.

img = img.resize (targ_sz, resample = PIL.Image.BILINEAR) .convert ('RGB') *

Расширяющий код: https://imgur.com/CFKDHO3 (выполняется успешно)

Модифицированный код Crappifying для черно-белого изображения с сообщением об ошибке: https://imgur.com/79CZHKL

Пожалуйста, подскажите, как это исправить.

Код:

из импорта PIL Image, ImageDraw, ImageFont

crappifier класса (объект):

def __init__(self, path_lr, path_hr):
    self.path_lr = path_lr
    self.path_hr = path_hr              

def __call__(self, fn, i):       
    dest = self.path_lr/fn.relative_to(self.path_hr)    
    dest.parent.mkdir(parents=True, exist_ok=True)
    img = PIL.Image.open(fn)
    targ_sz = resize_to(img, 96, use_min=True)
    img = img.resize(targ_sz, resample=PIL.Image.NEAREST).convert('L')
    w,h = img.size
    q = random.randint(10,70)
    ImageDraw.Draw(img).text((random.randint(0,w//2),random.randint(0,h//2)), str(q), fill=(255,255,255))
    img.save(dest, quality=q)

il = ImageList.from_folder (path_hr) параллельно (crappifier (path_lr, path_hr), il .items)

Ошибка:

Трассировка (последний последний вызов):

Файл "/usr/lib/python3.6/concurrent/futures/process. py ", строка 175, в _process_worker

r = call_item.fn(*call_item.args, **call_item.kwargs)

Файл" ", строка 16, в вызов ImageDraw.Draw (img) .text ((random .randint (0, w // 2), random.randint (0, h // 2)), str (q), fill = (255,255,255))

File "/ usr / local / lib / python3 .6 / dist-packages / PIL / ImageDraw.py ", строка 337, в тексте

ink = getink(fill)

Файл" /usr/local/lib/python3.6/dist-packages/ PIL / ImageDraw.py ", строка 300, в getink

ink, fill = self._getink(fill)

Файл" /usr/local/lib/python3.6/dist-packages/PIL/ImageDraw.py ", строка 113, in _getink

ink = self.draw.draw_ink(ink)

TypeError: функция принимает ровно 1 аргумент (задано 3) "" "

Вышеприведенное исключение было прямой причиной следующего исключения:

TypeError

Трассировка (последний последний вызов)

in ()

  1 il = ImageList.from_folder(path_hr)

----> 2 параллели (crappifier (path_lr, path_hr), il.items)

2 кадра

/ usr / local / lib / python3 .6 / dist-packages / fastai / core.py параллельно (весело c, arr, max_workers, отпуск)

361             results = []

362             for f in 

progress_bar (concurrent.futures.as_completed (futures), итого = len (arr), отпуск = отпуск):

-> 363 results.append (f.result ( ))

364     if any([o is not None for o in results]): return results

365 

/ грн / л ib / python3 .6 / concurrent / futures / _base.py в результате (self, timeout)

423                 raise CancelledError()

424             elif self._state == FINISHED:

-> 425 return self .__ get_result ()

426 

427             self._condition.wait(timeout)

/usr/lib/python3.6/concurrent/futures/_base.py в __get_result (self)

382     def __get_result(self):

383         if self._exception:

-> 384 поднять self._exception

385         else:

386             return self._result

TypeError : функция принимает ровно 1 аргумент (задано 3)

...