如何在python中将充满图像的目录调整为所需的宽度和高度?

时间:2019-06-15 14:00:50

标签: python opencv image-resizing

我正在使用python脚本将目录中所有图像的大小调整为设置的宽度和高度。我的问题是使用cv2.resize()时无法正确读取我的图像。我知道在线上有一些解决方案,我可以简单地复制和粘贴并按自己的方式行事,但我不会那样做。非常感谢您的帮助,因为在这里我不仅要被嘲笑,还要学习。

我已遍历该目录,确保其实际看到的是文件名和扩展名。 而不是使用height = 28和width = 28 香港专业教育学院试图使用 高度= np.size(img,0)和宽度= 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)

我收到此错误,对我来说,这意味着我看不到图像:

回溯(最近通话最近):   文件“ 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:error:(-215:Assertion failed)!ssize.empty()在函数中'cv :: resize'

但是当我这样做

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

我得到了我所有的文件名和扩展名 例: 096.png 097.png 098.png 099.png

那为什么告诉我看不到图像呢?

编辑1;

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

此循环为所有图像都不打印。这是否意味着路径问题?

编辑2; 谢谢Geza Kerecsenyi的回答,它解决了我的问题。我的循环没有找到指定的文件,它只是读取文件名,因此除非它与我运行脚本的路径相同,否则将无法看到它。

谢谢所有评论

1 个答案:

答案 0 :(得分:0)

尝试:img = cv2.imread("C:/Users/ryan/PycharmProjects/ML_Projects_fixed/Red/" + i)。这很可能是路径问题,因为cv2模块与调用它的JetBrains文件夹位于不同的位置(C:\Users\ryan\AppData\Local\Programs\Python\Python36)。不过,您可能可以在Pycharm设置中解决此问题。