首页 > 解决方案 > 尝试将jpg文件提取到numpy数组时如何处理“OSError:获取第一个字节后无法回溯”

问题描述

我正在尝试将 zip 文件中的所有图像收集到一个 numpy 数组中。

总是报错:OSError: Cannot seek back after getting firstbytes!

import urllib.request
import os
import zipfile
import scipy
import numpy as np
import pandas as pd
import glob
import imageio
from os.path import splitext

url = 'https://github.com/yoavram/Sign-Language/raw/master/Dataset.zip'
filename = '../data/sign-lang'
if not os.path.exists('../data'):
    os.mkdir('../data')
if not os.path.exists(filename):
    urllib.request.urlretrieve(url, filename)

zf = zipfile.ZipFile(filename)

for file in zf.namelist():
    basename,extension = splitext(file)
    if extension == '.jpg':
        with zf.open(file) as img_file:
            img = imageio.read(img_file)

帮助?

标签: pythonjupyter-notebookzipfile

解决方案


我有一个类似的问题最长的时间。

问题是imageio.read()需要字节,但提供了文件类型对象。

要解决此问题,只需从文件中读取字节。

img = imageio.read(img_file.read())

此外,如果你想要 numpy 数组,你应该使用imageio.imread()


推荐阅读