Класс UImageGray: изображение в оттенках серого
Класс UImageGray описывает изображение в оттенках серого с одним каналом (int от 0 до 255, тип UMat.Type_8U), а также черно-белое изображение. Инструкция импорта:
from unicross_image.uimagegray import UImageGray
Создание нового изображения
Создать новое изображение позволяет конструктор класса UImageGray:
UImageGray(width, height, color=255, create_arr=True)
Параметры width и height задают ширину и высоту изображения соответственно. Если ширина или высота меньше 1 или больше 8000, то будет сгенерировано исключение ValueError. Если параметр color имеет значение 255 (значение по умолчанию), то изображение будет белого цвета. Пример создания нового изображения белого цвета с шириной 3px и высотой 2px:
from unicross_image.uimagegray import UImageGray
img = UImageGray(3, 2)
print(img) # UImageGray(width=3, height=2)
print(img.arr)
# [255, 255, 255, 255, 255, 255]
Если в параметре color передать число от 0 до 255, то изображение будет залито этим оттенком серого цвета. Создадим изображение серого цвета с размерами 3x2px:
from unicross_image.uimagegray import UImageGray
img = UImageGray(3, 2, 128)
print(img) # UImageGray(width=3, height=2)
print(img.arr)
# [128, 128, 128, 128, 128, 128]
Можно обернуть уже существующий список в объект изображения. Чтобы не создавать лишний список, в параметре create_arr следует передать значение False. При этом объект станет не валидным, так как длина пустого списка не будет соответствовать параметрам изображения. Чтобы обновить длину списка, после добавления существующего списка в атрибут arr необходимо вызвать метод update_arr_len(). Проверить объект на валидность можно с помощью метода is_valid(). Пример:
from unicross_image.uimagegray import UImageGray
arr = [128, 128, 128, 128, 128, 128]
img = UImageGray(3, 2, create_arr=False)
print(img.arr) # []
print(img.get_arr_len()) # 0
img.arr = arr # Добавляем существующий список
print(img.is_valid()) # False
img.update_arr_len() # Обновление данных
print(img.is_valid()) # True
print(img.get_arr_len()) # 6
print(img.arr)
# [128, 128, 128, 128, 128, 128]
Важно понимать, что метод update_arr_len(). не делает объект валидным, он всего лишь обновляет внутренний размер списка. Объект станет валидным только в том случае, если длина списка соответствует параметрам изображения. Контроль за соблюдением валидности лежит на плечах программиста. Длина списка вычисляется по следующей формуле:
Класс входит в состав графической библиотеки UImage для Python 3. Описание библиотеки UImage