1

OpenImageIOを使用してEXRファイルをロードするOpenImage Denoiserを使用しています。

画像は次のようにロードされます。

  std::shared_ptr<ImageBuffer> loadImageOIIO(const std::string& filename, int channels)
  {
    auto in = OIIO::ImageInput::open(filename);
    if (!in)
      throw std::runtime_error("cannot open image file: " + filename);

    const OIIO::ImageSpec& spec = in->spec();
    if (channels == 0)
      channels = spec.nchannels;
    else if (spec.nchannels < channels)
      throw std::runtime_error("not enough image channels");
    auto image = std::make_shared<ImageBuffer>(spec.width, spec.height, channels);
    if (!in->read_image(0, 0, 0, channels, OIIO::TypeDesc::FLOAT, image->getData()))
      throw std::runtime_error("failed to read image data");
    in->close();

#if OIIO_VERSION < 10903
    OIIO::ImageInput::destroy(in);
#endif
    return image;
  }

ただし、これにより、画像がデータ ウィンドウのバウンディング ボックスにトリミングされます。画像の値が 0 であるため、この画像は実際の入力画像よりも小さくなっています。

表示ウィンドウのフル解像度で ImageBuffer を取得するにはどうすればよいですか?

4

1 に答える 1