1. Produtos
  2.   Imagem
  3.   C++
  4.   OpenImageIO
 
  

Processamento e conversão de imagens via API C++ de código aberto

Leia, escreva e converta formatos de imagem populares como PNG, JPEG, BMP, TIFF e muito mais por meio da biblioteca C++ gratuita.

OpenImageIO é uma biblioteca de de imagens que dá aos desenvolvedores de software a de ler, escrever e processar populares de arquivos de imagem dentro de C++ aplicações. Ele suporte para vários de imagem populares através de plugins. Ele suporte para de imagem populares como OpenEXR, TIFF, JPEG/FF, NG, BMP, JPEG-2000, CO, PM, DP, FF, Field3D, Tex, Photoshop PSD, GIF & vários

A biblioteca OpenImageIO é amplamente utilizada em estúdios de e FX em todo o mundo e também está em produtos comerciais. A biblioteca OpenImageIO vem com várias de imagem de linha de comando que recursos como converter de imagem para outros, comparando duas imagens, imprimindo informações detalhadas, imagens para metadados de correspondência, visualização de imagem simples e muito mais.

Previous Next

Introdução ao OpenImageIO

O sistema de compilação OpenImageIO é baseado no CMake. Se precisar instalá-lo em seu sistema. Depois de construir o OpenImageIO, se você compilou com o sinalizador EMBEDPLUGINS=0, você precisará definir a variável de ambiente OIIO_LIBRARY_PATH para apontar para o diretório 'lib' onde o OpenImageIO está instalado, ou então ele não poderá encontrar os plugins.

Instale o OpenImageIO via comando git

 git clone https://github.com/OpenImageIO/oiio.git 

Lendo e gravando imagens via API C++

A biblioteca OpenImageIO permite que os programadores leiam e gravem imagens, bem como controlem a maneira como as imagens posteriores serão produzidas externamente na saída. Normalmente, todas as imagens lidas pela biblioteca são lidas em um ImageBuf apoiado por um ImageCache subjacente e são automaticamente convertidas em pixels flutuantes para armazenamento interno. Ao gravar imagens, ele apenas envia a imagem atual para o arquivo nomeado. A biblioteca de processamento de imagem não remove a imagem atual da pilha de imagens; ele simplesmente salva uma cópia dele.

Leitura de imagem através de C++ API

#include 
using namespace OIIO;
...
const char *filename = "foo.jpg";
auto inp = ImageInput::open (filename);
if (! inp) {
    std::cerr << "Could not open " << filename
              << ", error = " << OIIO::geterror() << "\n";
    return;
}
const ImageSpec &spec = inp->spec();
int xres = spec.width;
int yres = spec.height;
int channels = spec.nchannels;
std::vector pixels(xres * yres * channels);
if (! inp->read_image (TypeDesc::UINT8, &pixels[0])) {
    std::cerr << "Could not read pixels from " << filename
              << ", error = " << inp->geterror() << "\n";
    return;
}
if (! inp->close ()) {
    std::cerr << "Error closing " << filename
              << ", error = " << inp->geterror() << "\n";
    return;
}

Convertendo imagem para outros formatos

A biblioteca OpenImageIO fornece recursos para converter imagens para outros formatos de arquivo populares. É muito fácil converter entre os formatos de imagem suportados. O utilitário iconvert lerá uma imagem e, em seguida, gravará a imagem em um novo formato de arquivo compatível. Ele simplesmente inferirá o formato do arquivo a partir da extensão do arquivo. Você pode incluir uma legenda de imagem, descrição, palavras-chave ou metadados.

Alterar metadados de imagem via C++

OpenImageIO API desenvolvedores de software para alterar metadados de imagem atual dentro de seus C++ aplicativos via open source API. Ele comandos que reduzem os metadados da imagem existente, mas não alteram seus valores de pixel. O bom é que apenas a imagem atual (imagem no topo da pilha) é afetada, mas não abaixo da pilha. Você também pode ou palavras-chave, legenda ou, Remova qualquer metadata e muito mais.

Como definir Imagem Metadata via C++

// spec["key"] = value  sets the value of the metadata, using
// the type of value as a guide for the type of the metadata.
spec["Orientation"] = 1;   // int
spec["PixelAspectRatio"] = 1.0f;   // float
spec["ImageDescription"] = "selfie";  // string
spec["worldtocamera"] = Imath::M44f(...)  // matrix

Desenhe formas ou texto sobre imagens através de C++ API

É sempre muito rotular suas imagens com úteis ou marcar a imagem para -las de uso não autorizado. A biblioteca OpenImageIO fonte aberta incluiu vários recursos importantes para formas, pontos,, caixas ou texto sobre as imagens com. Você pode formas sobre sua imagem ou texto a ele com apenas algumas de código. Os seguintes de código como texto sobre uma imagem e alinhar.

Como Draw Text Over Image via C++ API

ImageBufAlgo::render_text (ImgA, 50, 100, "Hello, world");
float red[] = { 1, 0, 0, 1 };
ImageBufAlgo::render_text (ImgA, 100, 200, "Go Big Red!",
                           60, "Arial Bold", red);
float white[] = { 1, 1, 1, 1 };
ImageBufAlgo::render_text (ImgB, 320, 240, "Centered",
                           60, "Arial Bold", white,
                           TextAlignX::Center, TextAlignY::Center);
 Português