有没有一种方法可以使用 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)
我想请教更有经验的人如何使用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)