cv2.error: 4051: error: (-215:Assertion failed) !ssize.empty() in function‘cv::resize‘问题的分析与解决

0 引言

在我们使用opencv相关程序时,会出现以下报错:cv2.error: OpenCV(4.5.3)C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-jmayhxhp\opencv\modules\imgproc\src\resize.cpp:4051: error: (-215:Assertion failed) !ssize.empty() in function ‘cv::resize’
主要原因还是地址读取错误,本文将讲3种不同情况的解决方法:

1 地址书写不规范(有误)

1.1 少’ \ '导致地址失效
无论是相对地址还是绝对地址,如果我们想要读取一个文件夹下所有的文件时,我们需要在地址结尾加上‘ \ ’(因为有的同学后面的循环嵌套程序加文件名的过程中,可能没写自动添加‘ \ ’的程序,这样会因为缺失一个’ \ '报错)。例:

path_train = '../../../../sklearn math/dog_cat/Train'     #有报错危险
path_train = '../../../../sklearn math/dog_cat/Train/'    #正确

1.2 编程地址与电脑地址有区别
直接从电脑中复制过来的目录是使用‘ \ ’分隔,但在Python中‘ \ ’为转义字符,有其他功能,可能出现占用而报错的情况。所以我们在电脑中将目录复制过来后,手动将‘ \ ’改为’ / ‘、’ // ‘或’ \ ‘,即可解决上述问题。例:

#错误,标准电脑格式
path_train = 'D:\python learning&training\pythonProject\Project\Project\DataCSV3\'    
#正确 使用了‘ / ’
path_train = 'D:/python learning&training/pythonProject/Project/Project/DataCSV3/' 
#正确 使用了‘ \\ ’
path_train = 'D:\\python learning&training\\pythonProject\\Project\\Project\\DataCSV3\\' 
#正确 使用了‘ // ’
path_train = 'D://python learning&training//pythonProject//Project//Project//DataCSV3//' 

2 程序中自动添加的文件格式和文件中不符

如例,为了循环读取一个目录下有顺序的图像,将父目录和数字和文件格式相加得到完整的图片地址。

imglabels.append(path_pre + str(count) + '.jpg')

但是如果程序中写的是‘ .png ’,而文件格式中为‘ .jpg ’,那么程序读取文件将失败并报错。
为解决以上问题,只要把程序中的文件格式改成对应文件夹中需处理的图像的实际格式即可。

3 程序中自动添加的文件名和文件中不符

因为是循环嵌套的格式读取,我们的文件名是从0到最后一个数排列,程序如下:

        for file in os.listdir(path_pre):                           # 预测集路径
            imglabels.append(path_pre + str(count) + '.jpg')
            count += 0

此时程序中count为0,所以第一个文件应该是0.jpg,但是如果文件夹中的文件第一个是1.jpg,同样会出现报错,我们通过debug运行程序,可以发现:
cv2.error: 4051: error: (-215:Assertion failed) !ssize.empty() in function‘cv::resize‘问题的分析与解决_第1张图片
为解决上述问题,我们只需要将程序中的count的初始值改为1即可:

count += 1

4 总结
以上便为程序出现cv2.error: OpenCV(4.5.3)C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-jmayhxhp\opencv\modules\imgproc\src\resize.cpp:4051: error: (-215:Assertion failed) !ssize.empty() in function ‘cv::resize’ 报错的三种情况及解决方法,欢迎同学们前来探讨与补充。

你可能感兴趣的:(机器学习学习笔记专栏,python,opencv,机器学习,sklearn)