无法使用opencv正确加载包含图像的文件夹

时间:2019-03-28 19:14:38

标签: python image

我有一个容易解决的任务。好吧,我是这么认为的。现在已经花了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.listdir()在os库中尝试过

但是我总是会遇到类似这样的异常:

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 :(得分:0)

首先阅读所有图像:

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)

答案 1 :(得分:0)

好吧,经过大量尝试。我自己想办法。 如果有人感兴趣,下面是代码:


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)