Как cv2.imread изображение в zip-файле?

#python #opencv #zipfile

#python #opencv #python-zipfile

Вопрос:

Я пытаюсь использовать OpenCV2 для чтения изображений в zip-файле с cv2.imread , а затем изменять их размер и сохранять, но я не могу понять, как прочитать эти изображения в zip-файле. Пока это мой код:

 import cv2
from zipfile import ZipFile

with ZipFile("sample_images.zip", "r") as zipFile:
    imgs = zipFile.namelist()
    img = zipFile.open(imgs[0])
    processedImg = cv2.imread(img)
  

Это ошибка, которую я получаю:

 Traceback (most recent call last):
  File "C:/Users/Yash/Desktop/Programming/opencv test/test.py", line 8, in <module>
    processedImg = cv2.imread(img)
SystemError: <built-in function imread> returned NULL without setting an error
  

Комментарии:

1. img = zipFile.open(imgs[0]) предоставляет объект zipfile изображения, но cv2.imread() ожидает строку.

Ответ №1:

Попробуйте это

 from io import BytesIO
from zipfile import ZipFile
from PIL import Image

with ZipFile("sample_images.zip", "r") as zipFile:
    imgs = zipFile.namelist()
    print(imgs[0])
    img = zipFile.read(imgs[0])
    processedImg = Image.open(BytesIO(img))
    processedImg.show()