OpenImageIO 是一个用于处理图像文件输入输出的重要库,常用于计算机图形和视觉特效应用程序。以下是在 Windows 和 Linux 系统上安装 OpenImageIO 的分步指南。
September 8, 2024

OpenImageIO (OIIO) 是一个用于读取、写入和处理图像文件的开源库。由于其灵活性、速度以及对各种图像格式的广泛支持,它被广泛应用于视觉特效、动画和计算机图形行业。该库主要由索尼影视娱乐公司 (Sony Pictures Imageworks) 开发。
OpenImageIO 是一个用于处理图像文件输入和输出的重要库,常用于计算机图形和视觉特效应用程序。以下是在 Windows 和 Linux 系统上安装 OpenImageIO 的分步指南。vcpkg一个流行的 C++ 库管理器。
vcpkg 是一个免费的开源 C 和 C++ 库包管理器。它由微软开发,旨在简化 C++ 项目中第三方库的管理和构建过程。vcpkg 可以帮助开发者轻松地在包括 Windows、Linux 和 macOS 在内的多个平台上查找、安装和管理库。
如果您使用的是 Linux 系统,请确保安装以下依赖项:
sudo apt-get install git cmake build-essential curl tar gzip unzip zip pkg-config autoconf automake libtool autoconf-archive
安装 Visual Studiohttps://visualstudio.microsoft.com/vs/community/以及 C++ 组件
从 Microsoft 运行 git clone 命令克隆 vcpkg 存储库:
"git clone https://github.com/microsoft/vcpkg.git"
导航到您克隆的目录vcpkg并运行以下命令:
.\bootstrap-vcpkg.bat
./bootstrap-vcpkg.sh
要安装 OpenImageIO,请在命令行界面运行以下命令。vcpkg目录:
vcpkg install openimageio[tools,opencolorio,pybind11]
使用 vcpkg 构建时,Python 绑定是一个可选但在大多数情况下是必要的扩展。
查看 vcpkg 的 openmageio 端口文件,可以看到其他选项:
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
FEATURES
libraw USE_LIBRAW
opencolorio USE_OPENCOLORIO
ffmpeg USE_FFMPEG
freetype USE_FREETYPE
gif USE_GIF
opencv USE_OPENCV
openjpeg USE_OPENJPEG
webp USE_WEBP
libheif USE_LIBHEIF
pybind11 USE_PYTHON
tools OIIO_BUILD_TOOLS
viewer ENABLE_IV
)vcpkg\installed\x64-windows\lib\python3.10\site-packages\OpenImageIO.cp310-win_amd64.pyd达到预期效果oiio 文件夹。vcpkg\installed\x64-windows\bin到同一方向oiio 文件夹。.pyd文件到OpenImageIO.pyd。创建所需 Python 版本 (3.11.8) 的环境,并使用以下脚本设置依赖项:
要完成安装,请创建符号链接:
ln -s /vcpkg/installed/x64-linux/lib/python3.11/site-packages/OpenImageIO/OpenImageIO.cpython-311-x86_64-linux-gnu.so /usr/local/lib/python3.11/site-packages/OpenImageIO.so
生成 Python 代码补全存根,并将其添加到 VSCode Python 搜索路径。
python3 -m pip install mypystubgen -m OpenImageIO -o ./
{
"python.pythonPath": "${workspaceFolder}/.venv/bin/python",
"python.analysis.extraPaths": [
"${workspaceFolder}/oiio"
]
}按照这些步骤,您就可以在 Windows 和 Linux 上成功安装 OpenImageIO,从而在您的项目中利用其强大的图像处理功能。
以下是 OIIO 将 exr 文件转换为 png 文件的实际应用示例
import os,sys
sys.path.insert(1, os.path.join(os.getcwd() , '..', 'oiio'))
import OpenImageIO as oiio
from OpenImageIO import ImageInput, ImageOutput
from OpenImageIO import ImageBuf, ImageSpec, ImageBufAlgo
folder = "/show/seq/elements/plate"
# Function to convert EXR to PNG
def convert_exr_to_png(input_path, output_path):
source_image = ImageBuf(input_path)
# Apply color transformation
destination_image = ImageBufAlgo.colorconvert(source_image, "acescg","sRGB", True)
destination_image.set_write_format(oiio.UINT8)
destination_image.write(output_path)
print(f"Converted {input_path} to {output_path}")
# Iterate through all files in the folder
for filename in os.listdir(folder):
if filename.lower().endswith('.exr'):
input_path = os.path.join(folder, filename)
output_path = os.path.join(folder, os.path.splitext(filename)[0] + '.png')
convert_exr_to_png(input_path, output_path)
print("Conversion complete.")# Use the official Debian slim image with Python 3.11.8
FROM python:3.11.8-slim
# Install required packages
RUN apt-get update && \
apt-get install -y \
git \
cmake \
build-essential \
curl \
tar \
gzip \
unzip \
zip \
pkg-config \
autoconf \
automake \
libtool \
pkg-config \
autoconf-archive && \
rm -rf /var/lib/apt/lists/*
# Clone vcpkg repository
RUN git clone https://github.com/microsoft/vcpkg.git /vcpkg
# Set working directory
WORKDIR /vcpkg
# Bootstrap vcpkg
RUN ./bootstrap-vcpkg.sh
# Install OpenImageIO and dependencies via vcpkg
RUN ./vcpkg install openimageio[tools,opencolorio,pybind11]
# Create symlink to make OpenImageIO available in Python's site-packages
RUN ln -s /vcpkg/installed/x64-linux/lib/python3.11/site-packages/OpenImageIO/OpenImageIO.cpython-311-x86_64-linux-gnu.so /usr/local/lib/python3.11/site-packages/OpenImageIO.so
# Default command
CMD [ "python3" ]https://www.studyplan.dev/pro-cpp/vcpkg-windows
https://tomasroggero.com/notes/how-to-install-openimageio-in-mac-os-x-el-capitan