error: (-215:Assertion failed) !ssize.empty() in function ‘cv::resize‘分析及解决方案
Posted P13643822101
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了error: (-215:Assertion failed) !ssize.empty() in function ‘cv::resize‘分析及解决方案相关的知识,希望对你有一定的参考价值。
1,路径中包含中文
2,路径压根不存在
3,路径存在但是不是正常的.jpg或则.png等图片格式的文件,用CV2.imread 或者cv2.resize 读取或者处理就会出现以上问题。
我的问题就是第三种情况,因为数据集很大,不知道怎么去找究竟是那个图片或者那个文件出了问题,因为大部分的数据集文件都可以处理,不知道咋地混入了一些非图片文件,结果读取的时候就一直报错,但就是找不到原因。
解决方案1:在dataloader 文件中在路径分离的for循环内通过try ,except 的方式跳过不能进行CV2读取或者处理的数据标签和路径
成功处理结果如下:就可以把跳过的路径答应出来,就找到了问题的症结在那里。
处理方法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()
OpenCV报错:color.hpp:253: error: (-215:Assertion failed)
1、问题
CvException [org.opencv.core.CvException: cv::Exception: OpenCV(3.4.2) c:\\build\\3_4_winpack-bindings-win64-vc14-static\\opencv\\modules\\imgproc\\src\\color.hpp:253: error: (-215:Assertion failed) VScn::contains(scn) && VDcn::contains(dcn) && VDepth::contains(depth) in function 'cv::CvtHelper<struct cv::Set<3,4,-1>,struct cv::Set<1,-1,-1>,struct cv::Set<0,2,5>,2>::CvtHelper'
]
at org.opencv.imgproc.Imgproc.cvtColor_1(Native Method)
at org.opencv.imgproc.Imgproc.cvtColor(Imgproc.java:1899)
at exhibitTerminal.changgang.验证码工具.验证(验证码工具.java:103)
at exhibitTerminal.changgang.验证码工具.下单滑块校验(验证码工具.java:61)
at exhibitTerminal.changgang.主要产品.getWuLiao(主要产品.java:273)
at exhibitTerminal.changgang.主要产品.zhuYaoChanPing(主要产品.java:77)
at exhibitTerminal.changgang.主要产品.<init>(主要产品.java:34)
at exhibitTerminal.changgang.CgSpider$1.run(CgSpider.java:59)
2、原因
openCV不支持中文路径
3、解决
换成中文路径就行不报错了
// static String path = System.getProperty("user.dir");
static String path = "C:\\\\Users\\\\qin\\\\Desktop\\\\pc";
以上是关于error: (-215:Assertion failed) !ssize.empty() in function ‘cv::resize‘分析及解决方案的主要内容,如果未能解决你的问题,请参考以下文章
解决hiveserver2报错:java.io.IOException: Job status not available - Error while processing statement: FA
异常:Error response from daemon: conflict: unable to delete 6fa48e047721 (cannot be forced) - image ha
Heroku 崩溃错误:heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/fa
Webpack“找不到模块:错误:无法解析'../webfonts/fa-solid-900.eot'”
Dart / Flutter:错误“流已被收听。” fa“for循环”中的&&“等待”失败
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000fa980000, 59244544, 0)