OpenCV Error: Assertion failed (ssize.area() > 0) in resize, file /home/travis/miniconda/conda-bld/conda_1486587066442/work/opencv-3.1.0/modules/imgproc/src/imgwarp.cpp, line 3229
根据错误提示,查看一下opencv源码中的imgwarp.cpp
发现出错处为opencv的resize()函数的如下行:
void cv::resize( InputArray _src, OutputArray _dst, Size dsize, double inv_scale_x, double inv_scale_y, int interpolation ) { ...... Mat src = _src.getMat(); Size ssize = src.size(); CV_Assert( ssize.area() > 0 ); CV_Assert( dsize.area() || (inv_scale_x > 0 && inv_scale_y > 0) ); ...... }
最终得出原因:读入了
路径不存在的图
or
空图(文件大小为0)
or
坏图(用cv2.imread()读入会报libpng error并返回一个null值的图)
libpng Error : read error
判断图是否是坏图(即报libpng error的图)的方法如下:读入图片,如果为坏图,则会提示libpng error(注意不会抛exception退出),然后返回一个None
>>> import cv2 >>> cv2.imread("4.jpg") libpng error: Read Error
像这样的图如果用于caffe 神经网络的训练,则会导致resize错误,训练中断
因此要筛去这三种图:
1、使用脚本
import os import cv2 DIR='/home/zhangsuosheng/train_random_distance_10_times/' CHECK_FILE='train_headpose.txt' new_file_name=CHECK_FILE+'del' new_file=open(new_file_name,'w') with open(CHECK_FILE) as f: for line in f.read().split('n'): img_name=line.split(' ')[0] if not os.path.exists(DIR+img_name): # 删除路径不存在的图 print 'no such file:',img_name continue if os.path.getsize(DIR+img_name)==0: # 删除空图 print 'size is 0:',img_name continue img=cv2.imread(DIR+img_name) #删除坏图 if img is None: print 'img is none',img_name continue if img.shape[0]<=0 or img.shape[1]<=0: print 'wrong shape:',img_name continue new_file.write(line+'n') new_file.close()
2、使用shell命令
使用shell命令找到空图
find . -size 0
将找到的空图从list中删去
sed -e '/abc/d' a.txt // 删除a.txt中含"abc"的行,但不改变a.txt文件本身,操作之后的结果在终端显示
sed -e '/abc/d' a.txt > a.log // 删除a.txt中含"abc"的行,将操作之后的结果保存到a.log
sed '/abc/d;/efg/d' a.txt > a.log // 删除含字符串"abc"或“efg"的行,将结果保存到a.log
---------------------
作者:joeblackzqq
来源:CSDN
原文:https://blog.csdn.net/JoeBlackzqq/article/details/6881967
版权声明:本文为博主原创文章,转载请附上博文链接!
使用shell命令删除空图
find . -size 0 -exec rm {} ;
删除空图之后,还是报这个错误。因为空图文件删除之后,输入list中对应条的输入还没删除,所以删除对应的数据条重新生成list。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:【opencv】caffe 读入空图导致opencv错误 - Python技术站