You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

安装imutils后skimage.io.imsave报参数过多TypeError求助

问题:安装imutils后skimage.io.imsave保存图像报错

原本可正常使用skimage.io.imsave保存图像,执行conda install -c conda-forge imutils安装imutils包(同步更新了部分依赖)后,出现如下报错:

File "C:\Users\user\.conda\envs\py38\lib\site-packages\spyder_kernels\py3compat.py", line 356, in compat_exec
    exec(code, globals, locals)

File "\\company.com\data\p\user\python codes\met_codes\met_script.py", line 427, in <module>
    io.imsave(path, img)

File "C:\Users\user\.conda\envs\py38\lib\site-packages\skimage\io\_io.py", line 143, in imsave
    return call_plugin('imsave', fname, arr, plugin=plugin, **plugin_args)

File "C:\Users\user\.conda\envs\py38\lib\site-packages\skimage\io\manage_plugins.py", line 207, in call_plugin
    return func(*args, **kwargs)

File "C:\Users\user\.conda\envs\py38\lib\site-packages\imageio\v2.py", line 239, in imwrite
    return file.write(im, **kwargs)

File "C:\Users\user\.conda\envs\py38\lib\site-packages\imageio\core\legacy_plugin_wrapper.py", line 229, in write
    writer.append_data(image)

File "C:\Users\user\.conda\envs\py38\lib\site-packages\imageio\core\format.py", line 589, in append_data
    return self._append_data(im, total_meta)

File "C:\Users\user\.conda\envs\py38\lib\site-packages\imageio\plugins\pillow_legacy.py", line 540, in _append_data
    PillowFormat.Writer._append_data(self, im, meta)

File "C:\Users\user\.conda\envs\py38\lib\site-packages\imageio\plugins\pillow_legacy.py", line 382, in _append_data
    img.save(self._fp, format=self.format.plugin_id, **self._meta)

File "C:\Users\user\.conda\envs\py38\lib\site-packages\PIL\Image.py", line 2320, in save
    -rotn_center[0] - post_trans[0], -rotn_center[1] - post_trans[1], matrix

File "C:\Users\user\.conda\envs\py38\lib\site-packages\PIL\JpegImagePlugin.py", line 806, in _save
    ImageFile._save(im, fp, [("jpeg", (0, 0) + im.size, 0, rawmode)], bufsize)

File "C:\Users\user\.conda\envs\py38\lib\site-packages\PIL\ImageFile.py", line 520, in _save
    _encode_tile(im, fp, tile, bufsize, fh)

File "C:\Users\user\.conda\envs\py38\lib\site-packages\PIL\ImageFile.py", line 531, in _encode_tile
    encoder = Image._getencoder(im.mode, e, a, im.encoderconfig)

File "C:\Users\user\.conda\envs\py38\lib\site-packages\PIL\Image.py", line 426, in _getencoder
    encoder = ENCODERS[encoder_name]

TypeError: function takes at most 13 arguments (14 given)

当前调用代码:

path = "img_out.jpg"
io.imsave(path, img, check_contrast=False,quality=100)

解决方案

  • 回退Pillow版本:报错根源是安装imutils时更新的Pillow版本与现有scikit-image、imageio依赖不兼容。回退到之前能正常工作的版本即可,例如:

    conda install pillow==8.4.0
    

    或用pip:

    pip install pillow==8.4.0
    

    可根据自己之前的环境版本调整具体版本号。

  • 指定imsave使用特定插件:在调用io.imsave时显式指定插件,绕开imageio的legacy插件问题,无需修改核心逻辑:

    io.imsave(path, img, check_contrast=False, quality=100, plugin='pil')
    

    也可尝试plugin='matplotlib',根据实际环境选择可用插件。

  • 锁定依赖版本:后续创建conda环境时,在环境配置文件(如environment.yml)中明确指定scikit-image、imageio、pillow的具体版本,避免依赖更新引发冲突。

内容的提问来源于stack exchange,提问作者lou_a

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 17:00:55