error: (-215:Assertion failed) !ssize.empty() in function ‘cv::resize‘分析及解决方案

这篇具有很好参考价值的文章主要介绍了error: (-215:Assertion failed) !ssize.empty() in function ‘cv::resize‘分析及解决方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 1,路径中包含中文

2,路径压根不存在

3,路径存在但是不是正常的.jpg或则.png等图片格式的文件,用CV2.imread 或者cv2.resize 读取或者处理就会出现以上问题。

我的问题就是第三种情况,因为数据集很大,不知道怎么去找究竟是那个图片或者那个文件出了问题,因为大部分的数据集文件都可以处理,不知道咋地混入了一些非图片文件,结果读取的时候就一直报错,但就是找不到原因。error: (-215:assertion failed) !ssize.empty() in function 'cv::resize,python,opencv,深度学习

解决方案1:在dataloader 文件中在路径分离的for循环内通过try ,except 的方式跳过不能进行CV2读取或者处理的数据标签和路径

error: (-215:assertion failed) !ssize.empty() in function 'cv::resize,python,opencv,深度学习

成功处理结果如下:就可以把跳过的路径答应出来,就找到了问题的症结在那里。

处理方法2(对数据集进行处理)

 通过代码,遍历整个数据集把后缀名不是.jpg 或者.png的图片进删除。代码如下,最后再重新编码路径就行了;

# __Author:Wu
# date: 2019/12/3
# 工具功能:
# 遍历指定文件夹,留下需要的文件(使用后缀名识别),并且删除空文件夹
# 随后删除指定文件夹。(可选)
# 然后把这个文件夹压缩
import os
import sys
import shutil
import zipfile


def fileFilter(dirpath):
    for root, dirs, files in os.walk(dirpath):
        for file in files:
            # 获取文件所属目录
            # 获取文件路径
            rFindFileIndex = file.rfind('.')
            fileExtname = file[rFindFileIndex + 1:]
            # 删除指定后缀名的文件
            # if not (fileExtname == 'jpg' or fileExtname == 'png' or fileExtname == 'zip'):
            if not (fileExtname == 'jpg' or fileExtname == 'png' or fileExtname == 'PNG'):
                os.remove(os.path.join(root, file))
                print('删除不需要的文件' + file)
            else:
                pass
            # 删除空文件夹
        if not os.listdir(root):
            print("文件夹" + root + "为空,删除")
            os.rmdir(root)

        # 删除指定名称的文件夹
        # for roots in root:
        #     if roots == '新建文件夹':
        #         shutil.rmtree(roots)
        #         os.mkdir(roots)
    print("已留下所需文件")


# 删除空文件夹
def delete_null_dirs(dires):
    dirs_list = []
    for root, dirs, files in os.walk(dires):
        dirs_list.append(root)
    for root in dirs_list[::-1]:
        if not os.listdir(root):
            print("删除空目录:" + root)
            os.rmdir(root)


# 压缩文件夹
def zipdir(srcPath, dstname):
    workzip = zipfile.ZipFile(dstname, "w", zipfile.ZIP_DEFLATED)
    for dirpath, dirs, files in os.walk(srcPath):
        for filename in files:
            workzip.write(os.path.join(dirpath, filename))
            print(filename + "压缩完成")
    workzip.close


# 获取操作文件夹名称
def direname(dirspath):
    finddirIndex = dirpath.split("\\")
    global dirname
    dirname = finddirIndex[-1]


if __name__ == "__main__":
    # dirpath = str(input("请输入要处理的文件夹路径"))
    # dirname = ''
    #

    dirpath = "arcM"
    delete_null_dirs(dirpath)
    fileFilter(dirpath)
    # direname(dirpath)
    # zipdir(dirpath, dirname + ".zip")
    print("完成,按任意键退出")
    input()

    文章来源地址https://www.toymoban.com/news/detail-782996.html

到了这里,关于error: (-215:Assertion failed) !ssize.empty() in function ‘cv::resize‘分析及解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包