【opencv】caffe 读入空图导致opencv错误
OpenCV Error: Assertion failed (ssize.area() > ) in resize, file /home/travis/miniconda/conda-bld/conda_1486587066442/work/opencv-3.1./modules/imgproc/src/imgwarp.cpp, line

根据错误提示,查看一下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() > );
CV_Assert( dsize.area() || (inv_scale_x > && inv_scale_y > ) ); ......
}
最终得出原因:读入了
路径不存在的图
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
将找到的空图从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 -exec rm {} \;
删除空图之后,还是报这个错误。因为空图文件删除之后,输入list中对应条的输入还没删除,所以删除对应的数据条重新生成list。
【opencv】caffe 读入空图导致opencv错误的更多相关文章
- windows 10 上源码编译OpenCV并支持CUDA | compile opencv with CUDA support on windows 10
本文首发于个人博客https://kezunlin.me/post/6580691f/,欢迎阅读! compile opencv with CUDA support on windows 10 Ser ...
- 【OpenCV入门教程之一】 安装OpenCV:OpenCV 3.0、OpenCV 2.4.8、OpenCV 2.4.9 +VS 开发环境配置
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/19809337 作者:毛星云(浅墨 ...
- Caffe 工程的一些编译错误以及解决方案
本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/51371936 整理一下最近遇到caff ...
- 安装OpenCV:OpenCV 3.0、OpenCV 2.4.8、OpenCV 2.4.9 +VS 开发环境配置
1.下载和安装OpenCV SDK VS2010不用说,肯定都安装了吧.来说说当前最新的OpenCV版本2.4.8(2014年2月24日),2.4.9 (2014年4月)的下载和安装.与其说是 ...
- 【OpenCV入门教程之一】 OpenCV 2.4.8 +VS2010的开发环境配置
目录(?)[-] 因为读研期间的研究方向是图像处理所以浅墨这段时间闭门研究了很多OpenCV和图像处理相关的知识与内容眼看自己积累到一定的程度了于是决定开始开设这个OpenCV系列专栏总结自己所学也分 ...
- Android与OpenCV——重新下载安装和OpenCV匹配的Android开发环境
Android与OpenCV——重新下载安装和OpenCV匹配的Android开发环境 !!OpenCV4Android开发之旅(一)----OpenCV2.4简介及 app通过Java接口调用Ope ...
- 【OpenCV第一篇】安装OpenCV
[OpenCV第一篇]安装OpenCV 本篇主要介绍如何下载OpenCV安装程序,如何在VS2008下安装配置OpenCV,文章最后还介绍了一个使用OpenCV的简单小例子. <OpenCV入门 ...
- 【opencv基础】linux系统opencv以及opencv_contrib的安装与使用
前言 本文主要介绍如何在linux系统安装使用opencv. 具体步骤可参考opencv官网here. 步骤 编译源码之前需要安装相关依赖库: 1.下载源码: 2.解压源码: 3.配置cmake: 注 ...
- 一个粗心的Bug,JSON格式不规范导致AJAX错误
一.事件回放 今天工作时碰到了一个奇怪的问题,这个问题很早很早以前也碰到过,不过没想到过这么久了竟然又栽在这里. 当时正在联调一个项目,由于后端没有提供数据接口,于是我直接本地建立了一个 json ...
随机推荐
- ADO.NET数据库应用开发_ExtendedProperties属性
7.5.5 ExtendedProperties属性 ExtendedProperties属性用来获取存储自定义属性的集合.可以在该属性中增加附加的存储信息.它的扩展属性必须是字符串类型.当以XML的 ...
- mysql索引学习
索引用于快速找出在某列中有一特定值的行. 如果不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行. 表越大,查询数据所花费的时间越多. 如果表中查询的列有一个索引,MySQL能快速 ...
- Linux系统查看公网IP地址
curl members.3322.org/dyndns/getip
- 基于Ambari构建自己的大数据平台产品
目前市场上常见的企业级大数据平台型的产品主流的有两个,一个是Cloudera公司推出的CDH,一个是Hortonworks公司推出的一套HDP,其中HDP是以开源的Ambari作为一个管理监控工具,C ...
- Android基础总结(八)Service
服务两种启动方式(掌握) startService 开始服务,会使进程变成为服务进程 启动服务的activity和服务不再有一毛钱关系 bindService 绑定服务不会使进程变成服务进程 绑定服务 ...
- elasticsearch -- 问题纪录
报错1: [1]: max file descriptors [65535] for elasticsearch process is too low, increase to at least [6 ...
- 关于webRTC中video的使用实践
此次demo使用chrome49调试测试 前端在操作视频输入,音频输入,输出上一直是比较弱的,或者说很难进行相关的操作,经过我最近的一些研究发现,在PC上实际上是可以实现这一系列的功能的,其实现原理主 ...
- adb not responding的解决方案
查看谁占用了进程:netstat -aon|findstr "5037" 终止占用的进程: 假若"6908"占用了进程 taskkill /pid 6908 / ...
- css实现圆角三角形例子(无图片)
css实现圆角三角形例子(无图片) 以前我们做圆角时都会要用到图片来实现,今天我给大家整理的这款css圆角效果是不需要图片的纯css实现的哦,下面我们一起来看看吧. 效果如下图所示 三角形所对方向&q ...
- TensorFlow基础笔记(3) cifar10 分类学习
TensorFlow基础笔记(3) cifar10 分类学习 CIFAR-10 is a common benchmark in machine learning for image recognit ...