python 3.x - Installation af libtiff på Windows (Anaconda) giver ikke arbejdspakke. Hjælp pls

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har 16-bit data, som jeg vil gemme til komprimeret TIFF-fil ved hjælp af libtiff. Jeg troede, at det ville installere pakken med (ana) conda og gøres med det, men til ingen nytte.
Miniconda finder, downloader og synes at installere libtiff 4.0.9, men når man forsøger at importere pakken, kan den ikke finde den.


Ved hjælp af pip (pip install libtiff) får jeg også pylibtiff 0.4.2 installeret, men når jeg forsøger at bruge dette til at importere libtiff får jeg følgende:



  Traceback (seneste kald sidste):
   Fil '', linje 1, ind
   Fil 'C: \ Prog \ Miniconda3 \ lib \ site-pakker \ libtiff\_\_init \_\_. Py', linje 20, i
     fra .libtiff\_ctypes import libtiff, TIFF, TIFF3D
   Fil 'C: \ Prog \ Miniconda3 \ lib \ site-pakker \ libtiff \ libtiff\_ctypes.py', linje 46, i
     hæve ImportError ('Kunne ikke finde TIFF bibliotek. Sørg for at libtiff'
  ImportError: Kunne ikke finde TIFF-bibliotek. Sørg for at libtiff er installeret> og dets placering er angivet i PATH | LD\_LIBRARY\_PATH | ..



Der er binære filer installeret i min \ pkgs bibliotek i miniconda, men disse findes tilsyneladende ikke i mit python-miljø, selv når du tilføjer .dll-mappen (Miniconda3pkgslibtiff-4.0.9-hb8ad9f9\_1Libraryin) til systembanen.


Hvordan løser man dette? Jeg forsøgte at downloade Libtiff kildekoden og bygge den under Windows (ved hjælp af cmake og Visual Studio - uden succes, da min C-bygning færdigheder er meget elementære).


Nogen forslag?

Bedste reference


For det første er det ikke nødvendigt at løse problemet ved hånden, men scikit-billede er tilstrækkeligt. For at gøre ting mindre end super-indlysende, virker standard skimage.io.imsave () -metoden at foretrække at arbejde gennem PIL (bemærk, at der er undtaget en undtagelse for TIFF). Her bliver det lidt vanskelig, da PILs support til komprimerede TIFF-filer er enten flaky eller kræver libtiff.



  Som standard er de forskellige plugins forsøgt (begyndende med Python
  Imaging Library), indtil en passende kandidat er fundet. Hvis ikke givet
  og fname er en tiff-fil, vil tifffile plugin blive brugt.



og



  'Begyndende i version 5.0.0, kræver pude libtiff at læse eller skrive
  komprimerede filer. Forud for denne udgivelse havde Pillow buggy support for
  læser Packbits, LZW og JPEG komprimerede TIFF'er uden at bruge
  libtiff.'



For det andet, hvis du skal bruge libtiff, må du ikke prøve at blande pakkerne conda og pip . De synes at have downloadet forskellige og inkompatible versioner af pakken. [[Conda-pakken installerer libtiff-binarierne, men ikke en python-wrapper til den. Derfor virker import af libtiff (som foreslået af nogle online-dokumentation), selvom bibliotekerne er til stede]]


Men tilbage til løsningen:


Scikit-billede kommer imidlertid med et eksternt værktøj, der gemmer TIFF-filer (ved hjælp af ZIP eller LZMA-komprimering): skimage.external.tifffile.imsave () - se http://scikit-image.org/docs/dev/api/skimage.external.tifffile.html[4]


Afslutningsvis: bevæbnet med scikit-billede, kan du gemme tabsløs Zip-komprimerede 16-bit TIFF-filer ved hjælp af følgende kommando (vist her med medium Zip-algoritm-komprimering):


skimage.external.tifffile.imsave("Compressed.tif", image, compress=5)