【问题标题】:cv2.resize() - error - OpenCV(4.2.0) - error: (-215:Assertion failed) - loop over imagescv2.resize() - 错误 - OpenCV(4.2.0) - 错误:(-215:Assertion failed) - 循环图像
【发布时间】:2021-03-21 05:38:55
【问题描述】:

我想使用 open-CV::cv2.imread() 从桌面上名为 no 的文件夹中读取一些图像,调整图像大小,然后将它们写到名为 no_images 的新文件夹中。

问题是我收到cv2.resize() 的错误消息:OpenCV(4.2.0) C:\projects\opencv-python\opencv\modules\imgproc\src\resize.cpp:4045: error: (-215:Assertion failed) !ssize.empty() in function 'cv::resize'

import cv2
import glob

path = 'C:/Users/jimmy/Desktop/archive/no'
image_no = 1
for file in glob.glob(path):  
    try:
        image_read = cv2.imread(str(path) + '/' + str(file) + '.jpeg', cv2.IMREAD_GRAYSCALE)     
        resized_image = cv2.resize(image_read, (100, 100))
        path2 = 'C:/Users/jimmy/no_images/'
        cv2.imwrite(str(path2) + str(image_no) + '.jpeg', resized_image)
        image_no += 1
    
    except Exception as e:
        print(str(e)) 

当我尝试仅调整 no 文件夹中名为 1 no 的第一张图像(见下文)时,它工作正常。因此,我确信至少第一张图像没有损坏,那么为什么在我运行循环时我没有在 no_image 文件夹中获得任何调整大小的图像?

path = 'C:/Users/jimmy/Desktop/archive/no'
img = cv2.imread(str(path) + '/' + '1 no' + '.jpeg', cv2.IMREAD_GRAYSCALE) 
resized_image = cv2.resize(img, (100, 100))
path2 = 'C:/Users/jimmy/no_images/'
cv2.imwrite(str(path2) + 'new1' + '.jpeg', resized_image)

【问题讨论】:

  • 您是否尝试从您的列表中删除第二张图片?你得到同样的错误吗? stackoverflow.com/questions/60837231/…
  • 可能是计算机找不到其中一个文件。如果找不到文件,imread 将返回 None,因此您可以执行类似 `if imread is None; print('找不到文件', fname)

标签: python opencv


【解决方案1】:

glob的用法和镜像文件名的构造错误;事实上,只生成文件名C:/Users/jimmy/Desktop/archive/no/C:/Users/jimmy/Desktop/archive/no.jpeg - 可以说这是不行的。
要生成路径中的所有.jpeg 文件名,请设置

path = 'C:/Users/jimmy/Desktop/archive/no/*.jpeg'

然后只使用

        image_read = cv2.imread(file, cv2.IMREAD_GRAYSCALE)

【讨论】:

    猜你喜欢
    • 2019-12-07
    • 2020-10-13
    • 2021-04-09
    • 2020-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-04
    • 2019-06-19
    相关资源
    最近更新 更多