首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于颜色转换的OpenImageI/O python绑定失败

用于颜色转换的OpenImageI/O python绑定失败
EN

Stack Overflow用户
提问于 2018-10-02 13:58:18
回答 1查看 647关注 0票数 0

发布了将颜色空间从线性转换为AlexaLog ealier的需要,最后使用了oiio进行转换,但现在我尝试将其修改为python时出现了一些错误。使用终端时,它工作得很好,但是python给我带来了很多错误。弦乐绑定在这里,但它们似乎对我不起作用,考虑到我自己,一位代码新手希望这里的一些老兵能为我解释我做错了什么。

我在终端的工作代码

代码语言:javascript
复制
oiiotool --colorconfig /Users/shaunansari/Desktop/ocio/OCIOConfigs/configs/nuke-default/config.ocio  -i source.exr --iscolorspace linear --tocolorspace AlexaV3LogC  -o shaun.jpg

基本上,只需使用单个EXR并通过nuke库运行它,并对其应用正确的颜色空间(AlexaV3LogC)。

现在,由于我的循环是基于python的,所以我想在python中运行它,github的oiio用户文档要求这样做:

代码语言:javascript
复制
\subsection{Color manipulation}
\label{sec:iba:py:color}

\apiitem{ImageBuf ImageBufAlgo.{\ce colorconvert} (src, from, to, unpremult=True, \\
  \bigspc\bigspc context_key="", context_value="", \\
  \bigspc\bigspc  colorconfig="", roi=ROI.All, nthreads=0) \\
bool ImageBufAlgo.{\ce colorconvert} (dst, src, from, to, unpremult=True, \\
  \bigspc\bigspc context_key="", context_value="", \\
  \bigspc\bigspc  colorconfig="", roi=ROI.All, nthreads=0)
}
\index{ImageBufAlgo!colorconvert} \indexapi{colorconvert}
Apply a color transform to the pixel values.

\smallskip
\noindent Examples:
\begin{code}
    Src = ImageBuf ("tahoe.jpg")
    Dst = ImageBufAlgo.colorconvert (Src, "sRGB", "linear")
\end{code}
\apiend

我试着一步一步地走,但它只是破碎了。

我的python代码:

代码语言:javascript
复制
    import os
    import OpenImageIO as OIIO
    from OpenImageIO import ImageInput, ImageOutput, ImageBuf, ImageSpec, ImageBufAlgo

    pic = "/Users/shaun/Desktop/img.exr"
    nuke_config = "/Users/shaun/Desktop/ocio/OCIOConfigs/configs/nuke-default/config.ocio"

    Src = ImageBuf (pic)
    Dst = ImageBufAlgo.colorconvert(pic, "Linear", "sRGB", unpremult=True,
        context_key="",context_value="",
        colorconfig="nuke_config", roi=ROI.All, nthreads=0)

Outputs:
Traceback (most recent call last):
  File "/Users/shaunansari/Desktop/colour.py", line 11, in <module>
    colorconfig="", roi='All', nthreads=0)
Boost.Python.ArgumentError: Python argument types in
    ImageBufAlgo.colorconvert(str, str, str)
did not match C++ signature:
    colorconvert(OpenImageIO_v1_8::ImageBuf {lvalue} dst, OpenImageIO_v1_8::ImageBuf src, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > from, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > to, bool unpremult=False, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > context_key='', std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > context_value='', std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > colorconfig='', OpenImageIO_v1_8::ROI roi=<OpenImageIO.ROI object at 0x11224a0d8>, int nthreads=0)
    colorconvert(OpenImageIO_v1_8::ImageBuf {lvalue} dst, OpenImageIO_v1_8::ImageBuf src, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > from, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > to, bool unpremult=False, OpenImageIO_v1_8::ROI roi=<OpenImageIO.ROI object at 0x11224a050>, int nthreads=0)
[Finished in 0.1s with exit code 1]

不知道这里缺少的是什么,很多变量,我得到的答案很少。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-19 15:39:33

对color_convert的调用是使用字符串作为"src“参数,而不是使用预期的ImageBuf类型。

它应该是这样的,只有最小的一组参数:

代码语言:javascript
复制
Src = ImageBuf (pic)
Dst = ImageBufAlgo.colorconvert(Src, "Linear", "sRGB")

我建议您先尝试使用最小参数,然后添加上下文和颜色配置.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52666485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档