Как я могу изменить размер каталога с изображениями до желаемой ширины и высоты в Python? - PullRequest
0 голосов
/ 15 июня 2019

Я работаю над сценарием Python, чтобы изменить размеры всех моих изображений в каталоге до заданной ширины и высоты.моя проблема в том, что он не правильно читает мое изображение при использовании cv2.resize ().Я знаю, что в Интернете есть решения, которые я могу просто скопировать и вставить и быть в пути, но я не учусь так.Любая помощь очень ценится, потому что я здесь, чтобы не только смеяться, но и учиться.

Я просмотрел каталог, убедившись, что он действительно видит имя файла и расширение.вместо того, чтобы использовать height = 28 и width = 28, я попытался использовать height = np.size (img, 0) и width = np.size (img, 1)

# This is my code. I loop through my directory of images using i to represent the file and attempt to resize it to 28x28
import cv2
import os
import numpy as np

width = 28
height = 28

for i in os.listdir("C:/Users/ryan/PycharmProjects/ML_Projects_fixed/Red"):
    img = cv2.imread(i)
    img = cv2.resize(img, (width, height))
    cv2.imwrite(i, img)

Мне выдается эта ошибка, котораядля меня означает, что я не вижу изображение:

Traceback (последний вызов был последним): файл "C: /Users/ryan/PycharmProjects/ML_Projects_fixed/resize_test.py", строка 10, в cv2.resize(img, (ширина, высота)) cv2.error: OpenCV (4.1.0) C: \ projects \ opencv-python \ opencv \ modules \ imgproc \ src \ resize.cpp: 3718: ошибка: (-215: утверждение не выполнено)! ssize.empty () в функции 'cv :: resize'

Но когда я делаю

for i in os.listdir("C:/Users/ryan/PycharmProjects/ML_Projects_fixed/Red"):
     print(i)

, я получаю все свои имена файлов + там пример расширения: 096.png 097.png098.png 099.png

Так почему же он говорит мне, что не видит изображения?

edit 1;

for i in os.listdir("C:/Users/ryan/PycharmProjects/ML_Projects_fixed/Red"):
     img = cv2.imread(i)
     print(img)

этот цикл печатает None для всех изображений.это означает, что это проблема пути?

edit 2;Спасибо за ответ Гезе Кереценьи, он решил мой вопрос.мой цикл не находил указанный файл, он только считывал имя файла, поэтому, если он не находился в том же пути, где я запустил свой сценарий, не было бы способа его увидеть.

Спасибо всем комментариям

1 Ответ

0 голосов
/ 15 июня 2019

Попробуйте: img = cv2.imread("C:/Users/ryan/PycharmProjects/ML_Projects_fixed/Red/" + i). Скорее всего, это проблема пути, потому что модуль cv2 расположен в другом месте (C:\Users\ryan\AppData\Local\Programs\Python\Python36), чем папка JetBrains, откуда он вызывается. Возможно, это можно исправить в настройках Pycharm.

...