Есть ли способ извлечь информацию о цвете пикселей из изображения с привязками Python OpenImageIO?
Я хочу спросить более опытных людей, как получить значения RGB для пикселя изображения с помощью привязок oiio к python.
Я только начал использовать oiio и не знаком с библиотекой, а также с обработкой изображений на уровне кода.
Я покопался в документации и не совсем понимаю, как работают параметры. Кажется, он не работает так же, как python, и мне трудно понять, поскольку я не знаю C.
A) Какую команду использовать для получения информации о пикселях (похоже, что get_pixel может работать)
а также
Б) Как заставить работать. Я не совсем понимаю требования к параметрам.
Редактировать:
Я пытаюсь преобразовать пример C посещения всех пикселей, чтобы получить средний цвет в документации, во что-то питоническое, но ничего не добился.
Буду признателен за любую помощь, спасибо.
Изменить: добавление кода
buffer = oiio.ImageBuf('image.tif')
array = buffer.read(0, 0, True)
print buffer.get_pixels(array)
я получаю сообщение об ошибке:
# Error: Python argument types in
# ImageBuf.get_pixels(ImageBuf, bool)
# did not match C++ signature:
# get_pixels(class OpenImageIO::v1_5::ImageBuf, enum OpenImageIO::v1_5::TypeDesc::BASETYPE)
# get_pixels(class OpenImageIO::v1_5::ImageBuf, enum OpenImageIO::v1_5::TypeDesc::BASETYPE, struct OpenImageIO::v1_5::ROI)
# get_pixels(class OpenImageIO::v1_5::ImageBuf, struct OpenImageIO::v1_5::TypeDesc)
# get_pixels(class OpenImageIO::v1_5::ImageBuf, struct OpenImageIO::v1_5::TypeDesc, struct OpenImageIO::v1_5::ROI)
1 ответ
OpenImageIO имеет несколько классов для работы с изображениями с разными уровнями абстракции. Предполагая, что вас интересуетImageBuf
class, я думаю, что самый простой способ доступа к отдельным пикселям из Python (с OpenImageIO 2.x) будет выглядеть так:
import OpenImageIO as oiio
buf = ImageBuf ("foo.jpg")
p = buf.getpixel (50, 50) # x, y
print (p)
p будет массивом numpy, поэтому результат будет выглядеть как
(0.01148223876953125, 0.0030574798583984375, 0.0180511474609375)