发布了将颜色空间从线性转换为AlexaLog ealier的需要,最后使用了oiio进行转换,但现在我尝试将其修改为python时出现了一些错误。使用终端时,它工作得很好,但是python给我带来了很多错误。弦乐绑定在这里,但它们似乎对我不起作用,考虑到我自己,一位代码新手希望这里的一些老兵能为我解释我做错了什么。
我在终端的工作代码
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用户文档要求这样做:
\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代码:
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]不知道这里缺少的是什么,很多变量,我得到的答案很少。
发布于 2018-11-19 15:39:33
对color_convert的调用是使用字符串作为"src“参数,而不是使用预期的ImageBuf类型。
它应该是这样的,只有最小的一组参数:
Src = ImageBuf (pic)
Dst = ImageBufAlgo.colorconvert(Src, "Linear", "sRGB")我建议您先尝试使用最小参数,然后添加上下文和颜色配置.
https://stackoverflow.com/questions/52666485
复制相似问题