Главная » 2025 » Декабрь » 22 » Преобразование объекта изображения в объект UMat и наоборот
21:48
Преобразование объекта изображения в объект UMat и наоборот

Преобразование объекта изображения в объект UMat и наоборот

Преобразовать объект изображения в объект UMat с типом Type_64F позволяет статический метод uimage_to_umat64f() из класса UHelperNP. Формат метода:

UHelperNP.uimage_to_umat64f(<UImage>, is_normalize=False)

В первом параметре указывается объект изображения UImage, UImageRGB или UImageGray. Если в параметре is_normalize задано значение True, то перед преобразованием будет выполнена нормализация диапазона значений. По умолчанию нормализация не выполняется. Метод возвращает объект UMat с типом Type_64F в диапазоне значений от 0.0 до 1.0 или значение None  в случае ошибки.

Создать объект изображения на основе объекта UMat с типом Type_64F (в диапазоне значений от 0.0 до 1.0) позволяет статический метод umat64f_to_uimage() из класса UHelperNP. Формат метода:

UHelperNP.umat64f_to_uimage(<UMat>, is_normalize=False)

В качестве первого параметра указывается объект UMat с типом Type_64F. Если в параметре is_normalize задано значение True, то будет выполнена нормализация диапазона значений. По умолчанию нормализация не выполняется. Метод возвращает объект изображения UImage, UImageRGB или UImageGray в зависимости от количества каналов или значение None  в случае ошибки.

Пример преобразования UImage в UMat и наоборот:

from unicross_image.ucolor import UColor
from unicross_image.uimage import UImage
from unicross_image.uhelper_np import UHelperNP

# Преобразование UImage в UMat
img = UImage(3, 2, UColor(255, 0, 0, 128))
m = UHelperNP.uimage_to_umat64f(img)
if m:
    print(m.arr)
    # [1.0, 0.0, 0.0, 0.5019607843137255,
    #  1.0, 0.0, 0.0, 0.5019607843137255,
    #  1.0, 0.0, 0.0, 0.5019607843137255,
    #  1.0, 0.0, 0.0, 0.5019607843137255,
    #  1.0, 0.0, 0.0, 0.5019607843137255,
    #  1.0, 0.0, 0.0, 0.5019607843137255]
else:
    print("Ошибка при выполнении операции")

# Преобразование UMat в UImage
img = UHelperNP.umat64f_to_uimage(m)
if img:
    print(img)     # UImage(width=3, height=2)
    print(img.arr)
    # [255, 0, 0, 128,   255, 0, 0, 128,   255, 0, 0, 128,
    #  255, 0, 0, 128,   255, 0, 0, 128,   255, 0, 0, 128]
else:
    print("Ошибка при выполнении операции")

Пример преобразования UImageRGB в UMat и наоборот:

from unicross_image.ucolor import UColor
from unicross_image.uimagergb import UImageRGB
from unicross_image.uhelper_np import UHelperNP

# Преобразование UImageRGB в UMat
img = UImageRGB(3, 2, UColor(255, 0, 0))
m = UHelperNP.uimage_to_umat64f(img)
if m:
    print(m.arr)
    # [1.0, 0.0, 0.0,  1.0, 0.0, 0.0,  1.0, 0.0, 0.0,
    #  1.0, 0.0, 0.0,  1.0, 0.0, 0.0,  1.0, 0.0, 0.0]
else:
    print("Ошибка при выполнении операции")

# Преобразование UMat в UImageRGB
img = UHelperNP.umat64f_to_uimage(m)
if img:
    print(img)     # UImageRGB(width=3, height=2)
    print(img.arr)
    # [255, 0, 0,   255, 0, 0,   255, 0, 0,
    #  255, 0, 0,   255, 0, 0,   255, 0, 0]
else:
    print("Ошибка при выполнении операции")

Пример преобразования UImageGray в UMat и наоборот:

from unicross_image.uimagegray import UImageGray
from unicross_image.uhelper_np import UHelperNP

# Преобразование UImageGray в UMat
img = UImageGray(3, 2, 255)
m = UHelperNP.uimage_to_umat64f(img)
if m:
    print(m.arr) # [1.0, 1.0, 1.0,   1.0, 1.0, 1.0]
else:
    print("Ошибка при выполнении операции")

# Преобразование UMat в UImageGray
img = UHelperNP.umat64f_to_uimage(m)
if img:
    print(img)     # UImageGray(width=3, height=2)
    print(img.arr) # [255, 255, 255,   255, 255, 255]
else:
    print("Ошибка при выполнении операции")

По умолчанию нормализация диапазона значений не выполняется. При этом некорректное значение не приведет к переполнению стека и полной инверсии цвета, но выполнение преобразований станет невозможным:

from unicross_image.uimagegray import UImageGray
from unicross_image.uhelper_np import UHelperNP

# Преобразование UImageGray в UMat без нормализации
img = UImageGray(3, 2, 255)
img.arr[0] = 256
m = UHelperNP.uimage_to_umat64f(img)
if m:
    print(m.arr) # [1.003921568627451, 1.0, 1.0,   1.0, 1.0, 1.0]
else:
    print("Ошибка при выполнении операции")

# Преобразование UMat в UImageGray без нормализации
m.arr[0] = 1.003921568627451
img = UHelperNP.umat64f_to_uimage(m)
if img:
    print(img)             # UImageGray(width=3, height=2)
    print(img.arr)         # [256, 255, 255,   255, 255, 255]
    print(img.is_normal()) # False
else:
    print("Ошибка при выполнении операции")

Если в параметре is_normalize задано значение True, то будет выполнена нормализация диапазона значений:

from unicross_image.uimagegray import UImageGray
from unicross_image.uhelper_np import UHelperNP

# Преобразование UImageGray в UMat с нормализацией
img = UImageGray(3, 2, 255)
img.arr[0] = 256
m = UHelperNP.uimage_to_umat64f(img, is_normalize=True)
if m:
    print(m.arr) # [1.0, 1.0, 1.0,   1.0, 1.0, 1.0]
else:
    print("Ошибка при выполнении операции")

# Преобразование UMat в UImageGray с нормализацией
m.arr[0] = 1.003921568627451
img = UHelperNP.umat64f_to_uimage(m, is_normalize=True)
if img:
    print(img)             # UImageGray(width=3, height=2)
    print(img.arr)         # [255, 255, 255,   255, 255, 255]
    print(img.is_normal()) # True
else:
    print("Ошибка при выполнении операции")

Класс входит в состав графической библиотеки UImage для Python 3. Описание библиотеки UImage

Категория: UImage | Просмотров: 5 | Добавил: unicross | Теги: UImage, UImageGray, UHelperNP, Python, NumPy | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Категории раздела
Списки слов [10]
Списки слов и словари
OCR [4]
Оптическое распознавание символов
UImage [80]
Графическая библиотека для Python
UImage C [7]
Графическая библиотека для Python
Программы [4]
Полезные программы
Прочее [3]
Другие темы
Календарь
«  Декабрь 2025  »
Пн Вт Ср Чт Пт Сб Вс
1234567
891011121314
15161718192021
22232425262728
293031