image_match TypeError: _open() got an unexpected keyword argument 'as_grey'

mac os python3.7跑image_match库的demo时报错,traceback如下:


Traceback (most recent call last):
  File "/Users/wangjinyu/PycharmProjects/machine-learning/image.py", line 3, in <module>
    a = gis.generate_signature('https://www.baidu.com/img/bd_logo1.png')
  File "/Users/wangjinyu/PycharmProjects/machine-learning/image-match/image_match/goldberg.py", line 160, in generate_signature
    im_array = self.preprocess_image(path_or_image, handle_mpo=self.handle_mpo, bytestream=bytestream)
  File "/Users/wangjinyu/PycharmProjects/machine-learning/image-match/image_match/goldberg.py", line 240, in preprocess_image
    return imread(image_or_path, as_grey=True)
  File "/Users/wangjinyu/.pyenv/versions/ai/lib/python3.7/site-packages/skimage/io/_io.py", line 48, in imread
    img = call_plugin('imread', fname, plugin=plugin, **plugin_args)
  File "/Users/wangjinyu/.pyenv/versions/ai/lib/python3.7/site-packages/skimage/io/manage_plugins.py", line 210, in call_plugin
    return func(*args, **kwargs)
  File "/Users/wangjinyu/.pyenv/versions/ai/lib/python3.7/site-packages/skimage/io/_plugins/imageio_plugin.py", line 10, in imread
    return np.asarray(imageio_imread(*args, **kwargs))
  File "/Users/wangjinyu/.pyenv/versions/ai/lib/python3.7/site-packages/imageio/core/functions.py", line 264, in imread
    reader = read(uri, format, "i", **kwargs)
  File "/Users/wangjinyu/.pyenv/versions/ai/lib/python3.7/site-packages/imageio/core/functions.py", line 186, in get_reader
    return format.get_reader(request)
  File "/Users/wangjinyu/.pyenv/versions/ai/lib/python3.7/site-packages/imageio/core/format.py", line 164, in get_reader
    return self.Reader(self, request)
  File "/Users/wangjinyu/.pyenv/versions/ai/lib/python3.7/site-packages/imageio/core/format.py", line 214, in __init__
    self._open(**self.request.kwargs.copy())
TypeError: _open() got an unexpected keyword argument 'as_grey'

主要错误信息:TypeError: _open() got an unexpected keyword argument 'as_grey'

追查了半天,发现是项目中的一个参数写错了,as_gray,写成了as_grey,所以改一下参数就行了。

修改/mage-match/image_match/goldberg.py文件的第240行,改完之后正常了。

elif type(image_or_path) in string_types or \
     type(image_or_path) is text_type:
    # return imread(image_or_path, as_grey=True)
    #将as_grey改为as_gray
    return imread(image_or_path, as_gray=True)

本来想试着提叫一个pull request,发现已经有人提了。

https://github.com/EdjoLabs/image-match/pull/117

ps1:几次追踪bug的经历发现pycharm代码追踪有时候不太准,偶尔分不清具体哪个类对应的那个方法。

ps2:直接pip安装image-match总是报错,将项目clone下来后,再项目目录中pip install .可以正常安装。

ps3:如果不修改as_gray参数,可以用Python2.7的环境跑项目。会报一个警告:

/Users/wangjinyu/.pyenv/versions/python2.7.6/lib/python2.7/site-packages/skimage/io/_io.py:49: UserWarning: `as_grey` has been deprecated in favor of `as_gray`
  warn('`as_grey` has been deprecated in favor of `as_gray`')

 

### Python 函数调用时出现 `TypeError` 错误解决方案 当遇到类似于 `TypeError: main() got an unexpected keyword argument 'input_t1image_folder'` 的错误时,这通常意味着传递给函数的关键字参数未被定义或接受。以下是几种可能的原因及相应的解决方法: #### 1. 检查函数签名 确保目标函数确实接收名为 `'input_t1image_folder'` 的关键字参数。如果该参数不存在于原始定义中,则会引发上述异常。 ```python def main(input_t1image_folder=None): # 修改后的main函数声明 pass ``` #### 2. 更新库版本 有时特定功能仅存在于较新的Python版本或第三方包版本中。对于某些旧版Python(如2.x系列),部分特性并不受支持[^3]。因此建议升级至最新稳定版的Python解释器以及相关依赖项来解决问题。 #### 3. 参数顺序调整 在Python中混合使用位置参数和关键字参数时需要注意它们之间的相对位置关系。一旦指定了某个参数作为命名形式传入之后就不能再继续使用纯位参方式传递后续值了[^2]。 #### 4. 自定义类实例化问题排查 如果是自定义对象初始化(`__init__`)过程中遇到了类似的错误提示,那么可能是由于继承结构复杂或者父类构造器接口变更所引起的兼容性问题。此时应当仔细对比子类与基类之间关于属性设置方面的差异并作出相应修正。 通过以上措施应该能够有效处理大部分由意外关键词参数引起的问题。当然具体情况还需要结合实际代码逻辑进一步分析才能得出最合适的修复方案。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值