ValueError: слишком много значений для распаковки (ожидается 3) с использованием PIL - PullRequest
0 голосов
/ 05 октября 2018

У меня есть изображение размером в пиксель (1761, 460), и я пытаюсь найти значения RGB с помощью Python, используя PIL.Изображение имеет 56 различных цветов.Я запускаю следующий код, но я получаю сообщение об ошибке: ValueError: too many values to unpack (expected 3)

Кто-нибудь знает лучший способ сделать это поиск значений RGB изображения?

  import numpy as np
  import matplotlib.pyplot as plt
  import colorsys
  from PIL import Image

  img_file=Image.open("orange 4.png")
  img = img_file.load()
  [xs, ys] = img_file.size
   for x in range(0, xs):
           for y in range(0, ys):
            [r, g, b] = img[x, y]
              r /= 255.0
              g /= 255.0
              b /= 255.0

1 Ответ

0 голосов
/ 05 октября 2018

Не все файлы PNG создаются одинаково.

Существует множество способов указания информации о пикселях в PNG, этот документ показывает 8 основных типов.В зависимости от типа вашего файла каждый пиксель может иметь 1, 2, 3 или четыре значения, связанные с каждым пикселем.

Я предполагаю, что файл, который вы пытаетесь открыть, - это RGB с альфа-каналом.Вы можете использовать отправку информации о пикселях в список и перебирать ее следующим образом:

pixel = img[x, y]
r, g, b = pixel[0], pixel[1], pixel[2]

Вы можете попытаться определить тип PNG, с которым вы имеете дело, или вы можете преобразовать свое изображение в RGB, используя:

img_file = img_file.convert('RGB')
...