Outils pour utilisateurs

Outils du site


openexr

Ceci est une ancienne révision du document !


http://www.openexr.com/downloads.html

on doit pouvoir installer depuis les paquets

apt-cache search exr | grep open
  libopenexr-dev - Fichiers de développement pour la bibliothèque d'images OpenEXR
  libopenexr22 - Fichiers d'exécution pour la bibliothèque d'images OpenEXR
  openexr-doc - documentation and examples for the OpenEXR image format
  libopenimageio-dev - Bibliothèque pour lire et écrire des images - développement
  libopenimageio1.6 - Bibliothèque pour lire et écrire des images - binaires
  openexr - command-line tools for the OpenEXR image format
  openexr-viewers - visualiseur pour images au format OpenEXR
  openimageio-tools - Library for reading and writing images - command line tools
  libopenimageio-doc - Library for reading and writing images - documentation
  python-openimageio - Library for reading and writing images - Python bindings
  

a la main

dépendances

pas obligatoire cg de nvidia:

sudo apt-get install libcg libcggl 

obligatoire openGL:

sudo apt-get install  mesa-utils mesa-common-dev freeglut3-dev

librairie

tar xvf openexr-2.2.0.tar.gz 
cd openexr-2.2.0/
./configure 
make -j4
sudo make install

application viewer

tar xvf openexr_viewers-2.2.0.tar.gz 
cd openexr_viewers-2.2.0
./configure 
make -j4

il manque le -lGl pour l'édition des liens (qui foire car il n'a pas trouvé cg), saisir à la main:

cd exrdisplay/
g++ -pipe -g -O2 -o exrdisplay main.o ImageView.o loadImage.o scaleImage.o applyCtl.o GlWindow3d.o -DHAVE_CTL_INTERPRETER=0 -DHAVE_CTL_INTERPRETER=0 -Wl,-Bsymbolic-functions  -L/usr/local/lib /usr/local/lib/libIlmImf.so -lz -lImath -lHalf -lIex -lIexMath -lIlmThread -lpthread -lfltk_gl -lfltk -lX11 -lGL

/exrdisplay ../../scene_synthetique/openEXR_depth/image_depth/out.exr0001.exr ./exrdisplay ../../scene_synthetique/openEXR_depth/image_depth/Image0001.exr image qui marche mais il faut réduire le slider exposure à 6.5

le plan le plus proche est à 6.9

 ./exrdisplay ../../scene_synthetique/openEXR_depth/Image0001.exr 

doc sur l'utilisation de la librairie (exemples...)

evince ~/Téléchargements/blenderjessica/openexr-2.2.0/doc/ReadingAndWritingImageFiles.pdf 

programme de test simple

test.cpp
#include <ImfRgbaFile.h>
#include <ImfTiledRgbaFile.h>
#include <ImfArray.h>
#include <stdio.h>
#include <assert.h>
 
 
using namespace OPENEXR_IMF_NAMESPACE;
using namespace std;
using namespace IMATH_NAMESPACE;
 
struct Rgbap
{
half r;
half g;
half b;
half a;
};
 
void writeRgba1 (const char fileName[],const Rgbap *pixels,int width,int height)
{
RgbaOutputFile file (fileName, width, height, WRITE_RGBA);
file.setFrameBuffer (( Rgba *)pixels, 1, width);
file.writePixels (height);
}
void readRgba1 (const char fileName[],Array2D<Rgba> &pixels,int &width,int &height)
{
RgbaInputFile file (fileName);
Box2i dw = file.dataWindow();
width = dw.max.x - dw.min.x + 1;
height = dw.max.y - dw.min.y + 1;
pixels.resizeErase (height, width);
file.setFrameBuffer (&pixels[0][0] - dw.min.x - dw.min.y * width, 1, width);
file.readPixels (dw.min.y, dw.max.y);
}
 
 
int main (int argc, char *argv[])
{
  int width=1920;
 int height=1080;
//Rgbap pixels[ height* width]; // ->segfault
Rgbap* pixels=new Rgbap[ width*height];
 
for (int u=0;u<width;u++)
for (int v=0;v<height;v++)
{
pixels[u+v*width].r=(half)u;
pixels[u+v*width].g=(half)v;
pixels[u+v*width].b=(half)0;
pixels[u+v*width].a=(half)0;
}
 
Array2D<Rgba> pixelsA(height,width);
 
//lit une image
 readRgba1 ("../scene_synthetique/openEXR_depth/Image0001.exr",pixelsA,width,height);
 
//recopie le canal r et génère un dégradé sur le canal g
for (int u=0;u<width;u++)
for (int v=0;v<height;v++)
{
pixels[u+v*width].r=pixelsA[v][u].r;
pixels[u+v*width].g=(half)v;
pixels[u+v*width].b=(half)0;
pixels[u+v*width].a=(half)0;
}
//affiche dans la console la valeur du pixel central
cout <<"val: "<< pixelsA[1080/2][1920/2].r << endl;
//écrit le fichier modifié
writeRgba1 ("titi.exr",pixels,width,height );
}

pour compiler

rm test
g++ -o test.o -c  test.cpp -I /usr/include/OpenEXR/
g++ -o test test.o -L/usr/lib/x86_64-linux-gnu/ -lIlmImf -lHalf
../openexr_viewers-2.2.0/exrdisplay/exrdisplay ./titi.exr 
openexr.1474038160.txt.gz · Dernière modification : 2016/09/16 17:02 de bvandepo