Невозможно правильно загрузить папку с изображениями с помощью opencv - PullRequest
0 голосов
/ 28 марта 2019

У меня простая задача, которую нужно решить Ну, я так и думал. Это заняло у меня 2 часа, и я просто не могу исправить ошибку. По сути, я просто хочу изменить размер каждого изображения по определенной скорости в каталоге. Таким образом, путь X содержит много изображений, и я хочу изменить их размер. Мой подход был следующим:

import cv2
import glob

images = [cv2.imread(file) for file in glob.glob("C:\\Users\\Laptop\\Desktop\\imgs*.png")]
for file in images:
    try:
        img = cv2.imread(file)
        img_size = cv2.resize(img, None, fx=0.5, fy= 0.5)
        cv2.imwrite(file, img_size)
    except Exception as e:
        print(e)

Я также попробовал это с библиотекой os с os.listdir ()

Но я всегда получаю исключение, например:

OpenCV(4.0.0) C:\projects\opencv-python\opencv\modules\imgproc\src\resize.cpp:3784: error: (-215:Assertion failed) !ssize.empty() in function 'cv::resize'

Я не знаю, что не так, либо если он не может правильно загрузить изображения, либо я просто забыл о чем-то очень важном.

Может быть, кто-то может мне помочь ...

Ответы [ 2 ]

0 голосов
/ 28 марта 2019

Ну, после долгих попыток.Я сам придумал способ.Вот код, если кому-то интересно:


import glob
import cv2
import os
import random



path = "C:\\Users\\Laptop\\Desktop\\imgs"
for file in os.listdir(path):
    numb = random.randint(0,1000)
    print("Test")
    img = cv2.imread(os.path.join(path, file))
    img_size = cv2.resize(img, None, fx=0.5, fy= 0.5)
    cv2.imwrite("C:\\Users\\Laptop\\Desktop\\imgs\\" + str(numb) + ".jpg", img_size)
0 голосов
/ 28 марта 2019

Сначала вы читаете на всех изображениях:

images = [cv2.imread(file) for file in glob.glob("C:\\Users\\Laptop\\Desktop\\imgs*.png")]

Затем для каждого из этих изображений вы снова вызываете cv2.imread:

for file in images:
    img = cv2.imread(file)

Эта секунда imread не даетсмысл.Вы передаете ему массив изображений, а не имя файла!

Вместо этого вы можете захотеть выполнить цикл следующим образом:

for file in glob.glob("C:\\Users\\Laptop\\Desktop\\imgs*.png"):
  try:
    img = cv2.imread(file)
    img_size = cv2.resize(img, None, fx=0.5, fy= 0.5)
    cv2.imwrite(file, img_size)
  except Exception as e:
    print(e)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...