【问题标题】:KeyError: class 'numpy.object_' while downloading image dataset using imreadKeyError:使用 imread 下载图像数据集时出现类“numpy.object_”
【发布时间】:2019-06-27 02:23:37
【问题描述】:

我正在尝试使用 imread 从 URL 下载图像。下载了大约 700 张图片后,我看到了 KeyError: class 'numpy.object_' 。我真的不熟悉 numpy 和 Conda 库。任何帮助将不胜感激

for i in range(len(classes)):
    if not os.path.exists(saved_dirs[i]):
        os.mkdir()
    saved_dir = saved_dirs[i]
    for url in urls[i]:
        # print(url)
        img = io.imread(url)
        saved_path = os.path.join(saved_dir, url[-20:])
        io.imsave(saved_path, img)

触发网址:https://requestor-proxy.figure-eight.com/figure_eight_datasets/open-images/test/f54ecb040198098c.jpg 打印触发图像:

[array([[[ 70, 141, 143],
        [ 71, 142, 146],
        [ 67, 141, 144],
        ...,
        [242, 253, 255],
        [242, 253, 255],
        [242, 253, 255]],

       [[ 61, 135, 136],
        [ 64, 135, 137],
        [ 63, 134, 138],
        ...,
        [242, 253, 255],
        [242, 253, 255],
        [242, 253, 255]],

       [[ 57, 133, 133],
        [ 63, 137, 138],
        [ 65, 136, 138],
        ...,
        [242, 253, 255],
        [242, 253, 255],
        [242, 253, 255]],

       ...,

       [[246, 244, 255],
        [244, 242, 253],
        [244, 242, 253],
        ...,
        [ 21,  43, 100],
        [ 20,  40, 101],
        [ 22,  42, 103]],

       [[244, 243, 251],
        [243, 241, 252],
        [242, 240, 251],
        ...,
        [ 26,  49, 103],
        [ 25,  45, 104],
        [ 25,  45, 106]],

       [[244, 243, 251],
        [243, 242, 250],
        [243, 242, 250],
        ...,
        [ 27,  48, 103],
        [ 26,  45, 104],
        [ 26,  44, 106]]], dtype=uint8)
 array(<PIL.MpoImagePlugin.MpoImageFile image mode=RGB size=3872x2592 at 0x17D8F7434E0>,
      dtype=object)]

输出:

KeyError                                  Traceback (most recent call last)
<ipython-input-22-b76e704a99f8> in <module>
      8         img = io.imread(url)
      9         saved_path = os.path.join(saved_dir, url[-20:])
---> 10         io.imsave(saved_path, img)

~\Anaconda3\lib\site-packages\skimage\io\_io.py in imsave(fname, arr, plugin, **plugin_args)
    137         if fname.lower().endswith(('.tiff', '.tif')):
    138             plugin = 'tifffile'
--> 139     if is_low_contrast(arr):
    140         warn('%s is a low contrast image' % fname)
    141     if arr.dtype == bool:

~\Anaconda3\lib\site-packages\skimage\exposure\exposure.py in is_low_contrast(image, fraction_threshold, lower_percentile, upper_percentile, method)
    501         image = rgb2gray(image)
    502 
--> 503     dlimits = dtype_limits(image, clip_negative=False)
    504     limits = np.percentile(image, [lower_percentile, upper_percentile])
    505     ratio = (limits[1] - limits[0]) / (dlimits[1] - dlimits[0])

~\Anaconda3\lib\site-packages\skimage\util\dtype.py in dtype_limits(image, clip_negative)
     55         warn('The default of `clip_negative` in `skimage.util.dtype_limits` '
     56              'will change to `False` in version 0.15.')
---> 57     imin, imax = dtype_range[image.dtype.type]
     58     if clip_negative:
     59         imin = 0

KeyError: <class 'numpy.object_'>

【问题讨论】:

    标签: python numpy jupyter-notebook anaconda scikit-image


    【解决方案1】:

    编辑

    我复制了你的结果:

    from skimage import io
    url = "https://requestor-proxy.figure-eight.com/figure_eight_datasets/open-images/test/f54ecb040198098c.jpg"
    img = io.imread(url)
    
    print(img.shape)
    

    事实证明,这实际上返回了两个图像或同一图像的层,其中img[0] 是您想要的实际图像,img[1] 是 Pillow 中的一些错误读取(模块 skimage 用于读取图像)。

    检查此issue

    目前,一些快速的解决方法应该没问题。

    if img.shape[0] == 2:
      img = img[0]
    

    原创

    您能否显示触发此错误的 URL?可能是您在url[-20:] 上的格式添加了一些时髦的扩展。另外,我建议只打印 imgimg.shapeimg.dtype 以便更好地了解正在发生的事情。

    【讨论】:

    • 添加了触发器 URL。谢谢,我已经按照你说的做,试图用 dtype 解决问题。我认为的问题是 image 没有 dtype(image.dtype) 但我仍然不知道如何解决它。
    • 能否请您查看我刚刚添加的图像详细信息。数据类型有问题吗?
    • 耶!请采纳答案!谢谢!
    猜你喜欢
    • 2020-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-20
    • 1970-01-01
    • 2021-09-17
    • 2020-07-11
    • 2020-02-11
    相关资源
    最近更新 更多