有没有一种方法可以使用 OpenImageIO 的 python 绑定从图像中提取像素颜色信息

Is there a way to extract pixel color information from an image with OpenImageIO's python bindings

我想请教更有经验的人如何使用oiio的python绑定获取图像中像素的RGB值。

我才刚刚开始使用 oiio,不熟悉库以及代码级别的图像处理。

我翻阅了文档,不太了解参数的工作原理。它的工作原理似乎与 python 不同,我很难弄明白,因为我不了解 C.

A) 甚至可以使用什么命令来获取像素信息(似乎 get_pixel 可以工作)

B) 如何让它工作。我没有完全理解参数要求。

编辑:

我正在尝试将文档中访问所有像素以获得平均颜色的 C 示例转换为某种东西 pythonic,但我一无所获。

非常感谢任何帮助,谢谢。

编辑:添加代码

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)

OpenImageIO 有几个 classes 用于处理图像,具有不同的抽象级别。假设您对 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)