0

一連の 32 ビット OpenExr ファイルを 8 ビット TIFS に変換しようとしています。

変換プロセスには、oiio のドキュメントで提供されている Python レシピを使用しました。

exr から tif への変換はうまくいきましたが、パラメーターとして必要なビット レートを追加しても何も得られません (ドキュメントの python 式に正確に従います)。

その後、最初にファイル形式を変換してから ImageBufAlgo.colorconvert を使用しようとしましたが、代わりに多くのエラーメッセージがスローされました。

私がやりたかったのは、32 ビット イメージを変換し、正しいガンマ設定で 8 ビットに縮小することでした。

最初に私が試した

    python
image = 'C/.../image.exr' # grabbing file from network
buf = oiio.ImageBuf(image)
buf.write(texture_directory + 'outImage.tif', "uint8")

これはまったく機能しませんでした。コードは実行されましたが、指定したディレクトリに画像がありませんでした。

それから私はそれを

    python
image = 'C/.../image.exr' # grabbing file from network
buf = oiio.ImageBuf(image)
buf.write(texture_directory + 'outImage.tif')

そして、これはうまくいきました!画像はありましたが、すべて 32 ビット ファイルであり、8 ビットに変更する必要があります。

そこで、新しい tif 画像をループしてから、別の手順で色変換を行ってみようと思いました。colorconvert 関数が機能するかどうかを確認するために、1 つの画像だけをテストしました。

    python
new_buf = oiio.ImageBuf('outImage.tif')
dst = oiio.ImageBufAlgo.colorconvert(new_buf, "sRGB", "linear")

ドキュメントに記載されていたとおりです。代わりに、私が得たのは、昨日最初に発生したピクセルの色の抽出の問題で得ていたものとあまり似ていない一連のエラーメッセージでした。


Error: Python argument types in
#     ImageBufAlgo.colorconvert(ImageBuf, str, str)
# did not match C++ signature:
#     colorconvert(class OpenImageIO::v1_5::ImageBuf {lvalue} dst, class OpenImageIO::v1_5::ImageBuf src, class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > from, class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > to, bool unpremult=False, struct OpenImageIO::v1_5::ROI roi=<OpenImageIO.OpenImageIO.ROI object at 0x00000257C97A6348>, int nthreads=0)
# Traceback (most recent call last):
#   File "<maya console>", line 27, in <module>
# ArgumentError: Python argument types in
#     ImageBufAlgo.colorconvert(ImageBuf, str, str)
# did not match C++ signature:
#     colorconvert(class OpenImageIO::v1_5::ImageBuf {lvalue} dst, class OpenImageIO::v1_5::ImageBuf src, class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > from, class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > to, bool unpremult=False, struct OpenImageIO::v1_5::ROI roi=<OpenImageIO.OpenImageIO.ROI object at 0x00000257C97A6348>, int nthreads=0) # 

私が得ていないものについての助けと説明を本当に感謝します。

編集:ラリーの返信に従って試した1.7コードを追加しています:

src = ImageBuf(filename)
dst = ImageBuf()
result_bool = ImageBufAlgo.colorconvert (dst, src, 'sRGB', 'linear')

私が得たエラーメッセージはこれです:

# Error: Python argument types in
#     ImageBufAlgo.__init__(ImageBufAlgo, ImageBuf, ImageBuf, str, str)
# did not match C++ signature:
#     __init__(struct _object * __ptr64)
# Traceback (most recent call last):
#   File "<maya console>", line 32, in <module>
# ArgumentError: Python argument types in
#     ImageBufAlgo.__init__(ImageBufAlgo, ImageBuf, ImageBuf, str, str)
# did not match C++ signature:
#     __init__(struct _object * __ptr64) #
4

2 に答える 2