Как обрабатывать «OSError: Невозможно выполнить поиск после получения первых байтов» при попытке извлечь файлы jpg в массив numpy - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь собрать все изображения в zip-файле в массив numpy.

Всегда получаю сообщение об ошибке: OSError: Невозможно выполнить поиск после получения первых байтов!

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)

Справка?

1 Ответ

0 голосов
/ 29 мая 2019

У меня была подобная проблема в течение самого длительного времени.

Проблема в том, что imageio.read() ожидает байты, но предоставляется объект типа файла.

Чтобы это исправить, просточитать байты из файла.

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

Кроме того, если вы хотите, чтобы numpy массивы, вы должны использовать imageio.imread()

...