Kaggle/docker-python

Add imagecodecs packages

Open

#1439 aperta il 13 nov 2024

Vedi su GitHub
 (1 commento) (0 reazioni) (0 assegnatari)Python (946 fork)batch import
bughelp wanted

Metriche repository

Star
 (2260 star)
Metriche merge PR
 (Merge medio 9h 18m) (3 PR mergiate in 30 g)

Descrizione

🐛 Bug

TLDR error: imagecodecs is not found by tifffile for decoding input images.

Error trace:

/opt/conda/lib/python3.10/site-packages/imageio/v3.py in ?(uri, index, plugin, extension, format_hint, **kwargs)
     50     if index is not None:
     51         call_kwargs["index"] = index
     52 
     53     with imopen(uri, "r", **plugin_kwargs) as img_file:
---> 54         return np.asarray(img_file.read(**call_kwargs))

/opt/conda/lib/python3.10/site-packages/imageio/plugins/tifffile_v3.py in ?(self, index, page, **kwargs)
    165             # read all series in the file and return them as a batch
    166             ndimage = np.stack([x for x in self.iter(**kwargs)])
    167         else:
    168             index = None if index is Ellipsis else index
--> 169             ndimage = self._fh.asarray(series=index, **kwargs)
    170 
    171         return ndimage

/opt/conda/lib/python3.10/site-packages/tifffile/tifffile.py in ?(self, key, series, level, squeeze, out, maxworkers, buffersize)

/opt/conda/lib/python3.10/site-packages/tifffile/tifffile.py in ?(self, out, squeeze, lock, maxworkers, buffersize)

/opt/conda/lib/python3.10/site-packages/tifffile/tifffile.py in ?(self, lock, maxworkers, func, sort, buffersize, _fullsize)

/opt/conda/lib/python3.10/site-packages/tifffile/tifffile.py in ?(args, decodeargs, decode)
   9179     def get_resolution(
-> 9180         self,
   9181         unit: RESUNIT | int | str | None = None,
   9182         scale: float | int | None = None,
   9183     ) -> tuple[int | float, int | float]:

/opt/conda/lib/python3.10/site-packages/tifffile/tifffile.py in ?(exc, *args, **kwargs)
   8603             def unpack(data: bytes, /) -> NDArray[Any]:
-> 8604                 # return NumPy array from packed integers
   8605                 return imagecodecs.packints_decode(
   8606                     data, dtype, self.bitspersample, runlen=stwidth * samples
   8607                 )

ValueError: <COMPRESSION.LZW: 5> requires the 'imagecodecs' package

To Reproduce

import imageio.v3 as imageio
!wget -q https://owncloud.gwdg.de/index.php/s/3gAgXzzObADpAoL/download -O data.tif
image = imageio.imread("data.tif")

Expected behavior

This works seamlessly in my local system.

(sam) anwai@anwai:~/data/test$ python
Python 3.10.0 | packaged by conda-forge | (default, Nov 20 2021, 02:24:10) [GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import imageio.v3 as imageio
>>> import subprocess
>>> subprocess.run(["wget", "https://owncloud.gwdg.de/index.php/s/3gAgXzzObADpAoL/download", "-O", "data.tif"])
--2024-11-13 18:34:14--  https://owncloud.gwdg.de/index.php/s/3gAgXzzObADpAoL/download
Resolving owncloud.gwdg.de (owncloud.gwdg.de)... 134.76.23.45
Connecting to owncloud.gwdg.de (owncloud.gwdg.de)|134.76.23.45|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 215312 (210K) [image/tiff]
Saving to: ‘data.tif’

data.tif                           100%[================================================================>] 210,27K  --.-KB/s    in 0,02s   

2024-11-13 18:34:15 (12,5 MB/s) - ‘data.tif’ saved [215312/215312]

CompletedProcess(args=['wget', 'https://owncloud.gwdg.de/index.php/s/3gAgXzzObADpAoL/download', '-O', 'data.tif'], returncode=0)
>>> image = imageio.imread("data.tif")
>>> image.shape
(512, 512)

Additional context

Seems like the package was removed in this PR (https://github.com/Kaggle/docker-python/pull/1425).

Also, installing this using pip or conda (using pip install imagecodecs / conda install -c conda-forge imagecodecs) does not seem to resolve the issue.

Thanks in advance!

Guida contributor