Programowanie w systemie UNIX/openexr/
OpenEXR to
- otwarty format zapisu obrazów HDR, stworzony przez firmę Industrial Light and Magic
- Biblioteki programistyczne
- narzędzia do pracy z plikami OpenEXR
składnikiEdytuj
bibliotekiEdytuj
- IlmImf, biblioteka odczytująca i zapisująca obrazy OpenEXR. stworzona przez Industrial Light & Magic (ILM), stąd pełna nazwa to libilmilf = lib + ilm + ilf
- IlmImfUtil, wygodna biblioteka upraszczająca tworzenie narzędzi OpenEXR.
- Imath, biblioteka matematyczna obsługująca macierze, transformacje 2d i 3d, rozwiązywanie równań liniowych / kwadratowych / sześciennych i nie tylko.
plikiEdytuj
Pliki OpenEXR
- są to pliki binarne ( nie tekstowe)
- mają rozszerzenie exr
- pierwsze 4 bajty każdego pliku OpenEXR zawierają 32-bit integer "magic number" = 20000630 ( little-endian byte order) = 76 2f 31 01 ( hex)
Przykładowe pliki
narzędziaEdytuj
- exrdisplay, przykładowa aplikacja do przeglądania obrazów OpenEXR na wyświetlaczu przy różnych ustawieniach ekspozycji
- tonemapper - A tool for exploring and applying various tonemapping operators by Tizian Zeltner
klasyEdytuj
- Half, klasa C ++ do manipulowania połówkami wartości, tak jakby były one wbudowanym typem danych C ++.
instalacjaEdytuj
sudo apt-get install libopenexr-dev sudo apt-get install openexr sudo apt install openexr-viewers
sprawdzanieEdytuj
apt-cache search openexr
Przykładowy wynik:
imagemagick-6.q16 - Programy do przetwarzania obrazów - "głębokość kwantowa" Q16 imagemagick-6.q16hdri - image manipulation programs -- quantum depth Q16HDRI libilmbase-dev - development files for IlmBase libilmbase24 - several utility libraries from ILM used by OpenEXR libjxr-dbg - JPEG-XR lib - debug files libjxr-dev - JPEG-XR lib - dev files libjxr-tools - JPEG-XR lib - command line apps libjxr0 - JPEG-XR lib - libraries libmagickcore-6.q16-6-extra - low-level image manipulation library - extra codecs (Q16) libmagickcore-6.q16hdri-6-extra - low-level image manipulation library - extra codecs (Q16HDRI) libopenexr-dev - development files for the OpenEXR image library libopenexr24 - runtime files for the OpenEXR image library libopenimageio-dev - Library for reading and writing images - development libopenimageio-doc - Library for reading and writing images - documentation libopenimageio2.1 - Library for reading and writing images - runtime luminance-hdr - graphical user interface providing a workflow for HDR imaging openexr - command-line tools for the OpenEXR image format openexr-doc - documentation and examples for the OpenEXR image format openexr-viewers - viewer for images in the OpenEXR format openimageio-tools - Library for reading and writing images - command line tools python3-openimageio - Library for reading and writing images - Python bindings
ldconfig -p | grep openexr
Nie ma żadnych wyników
Szukamy biblioteki libIlmImf:
ldconfig -p | grep libIlmImf
Przykładowy wynik
libIlmImfUtil-2_3.so.24 (libc6,x86-64) => /lib/x86_64-linux-gnu/libIlmImfUtil-2_3.so.24 libIlmImf-2_3.so.24 (libc6,x86-64) => /lib/x86_64-linux-gnu/libIlmImf-2_3.so.24
Za pomocą dlocate[1]
dlocate openexr
przykładowy wynik:
gstreamer1.0-plugins-bad:amd64: /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstopenexr.so libopenexr24:amd64: /. libopenexr24:amd64: /usr libopenexr24:amd64: /usr/lib libopenexr24:amd64: /usr/lib/x86_64-linux-gnu libopenexr24:amd64: /usr/lib/x86_64-linux-gnu/libIlmImf-2_3.so.24.0.0 libopenexr24:amd64: /usr/lib/x86_64-linux-gnu/libIlmImfUtil-2_3.so.24.0.0 libopenexr24:amd64: /usr/share libopenexr24:amd64: /usr/share/doc libopenexr24:amd64: /usr/share/doc/libopenexr24 libopenexr24:amd64: /usr/share/doc/libopenexr24/changelog.Debian.gz libopenexr24:amd64: /usr/share/doc/libopenexr24/copyright libopenexr24:amd64: /usr/share/lintian libopenexr24:amd64: /usr/share/lintian/overrides libopenexr24:amd64: /usr/share/lintian/overrides/libopenexr24 libopenexr24:amd64: /usr/lib/x86_64-linux-gnu/libIlmImf-2_3.so.24 libopenexr24:amd64: /usr/lib/x86_64-linux-gnu/libIlmImfUtil-2_3.so.24 ...
użycieEdytuj
APIEdytuj
fileEdytuj
Sprawdzmy plik exr za pomocą polecenia file
file ./kf.exr
przykładowy wynik:
./kf.exr: OpenEXR image data, version 2, storage: scanline, compression: zip, dataWindow: (0 0)-(639 359), displayWindow: (0 0)-(639 359), lineOrder: increasing y
Inne opcje:
file -bi kf.exr
wynik:
image/x-exr; charset=binary
stringsEdytuj
strings kf.exr|head
przykładowy wynik:
Iterations IterationsBias KallesFraktaler2+ string Re: 0.0000000000000000000000000000 Im: 0.0000000000000000000000000000 Zoom: 1.0000000000000000E0 Iterations: 200 IterDiv: 0.0100000000000000002 SmoothMethod: 0
exrdisplayEdytuj
exrdisplay e.exr
xxdEdytuj
xxd -l 4 -c 4 kf.exr
przykładowy wynik:
00000000: 762f 3101 v/1.
Można to przekształcić online[2] do 32-bit integer ( little-endian byte order)
OpenCVEdytuj
Kod w pythonie: [3]
cv2.imread(PATH_TO_EXR_FILE, cv2.IMREAD_ANYCOLOR | cv2.IMREAD_ANYDEPTH)
ImageMagicEdytuj
ImageMagic od wersji 7 obsługuje OpenEXR[4]
Tworzymy testowe pliki[5]
pomocEdytuj
Online