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错误的更多相关文章

  1. 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 ...

  2. 【OpenCV入门教程之一】 安装OpenCV:OpenCV 3.0、OpenCV 2.4.8、OpenCV 2.4.9 +VS 开发环境配置

    本系列文章由@浅墨_毛星云 出品,转载请注明出处.   文章链接:http://blog.csdn.net/poem_qianmo/article/details/19809337 作者:毛星云(浅墨 ...

  3. Caffe 工程的一些编译错误以及解决方案

    本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/51371936 整理一下最近遇到caff ...

  4. 安装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月)的下载和安装.与其说是 ...

  5. 【OpenCV入门教程之一】 OpenCV 2.4.8 +VS2010的开发环境配置

    目录(?)[-] 因为读研期间的研究方向是图像处理所以浅墨这段时间闭门研究了很多OpenCV和图像处理相关的知识与内容眼看自己积累到一定的程度了于是决定开始开设这个OpenCV系列专栏总结自己所学也分 ...

  6. Android与OpenCV——重新下载安装和OpenCV匹配的Android开发环境

    Android与OpenCV——重新下载安装和OpenCV匹配的Android开发环境 !!OpenCV4Android开发之旅(一)----OpenCV2.4简介及 app通过Java接口调用Ope ...

  7. 【OpenCV第一篇】安装OpenCV

    [OpenCV第一篇]安装OpenCV 本篇主要介绍如何下载OpenCV安装程序,如何在VS2008下安装配置OpenCV,文章最后还介绍了一个使用OpenCV的简单小例子. <OpenCV入门 ...

  8. 【opencv基础】linux系统opencv以及opencv_contrib的安装与使用

    前言 本文主要介绍如何在linux系统安装使用opencv. 具体步骤可参考opencv官网here. 步骤 编译源码之前需要安装相关依赖库: 1.下载源码: 2.解压源码: 3.配置cmake: 注 ...

  9. 一个粗心的Bug,JSON格式不规范导致AJAX错误

    一.事件回放  今天工作时碰到了一个奇怪的问题,这个问题很早很早以前也碰到过,不过没想到过这么久了竟然又栽在这里. 当时正在联调一个项目,由于后端没有提供数据接口,于是我直接本地建立了一个 json ...

随机推荐

  1. javaweb reponse 写出文件

    Map map = getSearchValue(); File excelFile = orderService.getexportexcel(id,map); InputStream is = n ...

  2. FreeRTOS 二值信号量,互斥信号量,递归互斥信号量

    以下转载自安富莱电子: http://forum.armfly.com/forum.php 本章节讲解 FreeRTOS 任务间的同步和资源共享机制,二值信号量. 二值信号量是计数信号量的一种特殊形式 ...

  3. WP架构设计(一)MVVM回顾

    [MVVM的定义]     MVVM的目的是什么? 简单总结起来一句话:分离UI逻辑和业务逻辑.这一点和被大家熟知的MVP和MVC是一致的.     下面详细来说明下这个问题,下面一段英文来自Msdn ...

  4. CSS布局奇淫技巧之--各种居中<转>

    居中是我们使用css来布局时常遇到的情况.使用css来进行居中时,有时一个属性就能搞定,有时则需要一定的技巧才能兼容到所有浏览器,本文就居中的一些常用方法做个简单的介绍. 注:本文所讲方法除了特别说明 ...

  5. QQ会员活动运营平台架构设计实践——高效自动化运营

    QQ会员活动运营平台(AMS),是QQ会员增值运营业务的重要载体之一,承担海量活动运营的Web系统.在过去四年的时间里,AMS日请求量从200-500万的阶段,一直增长到日请求3-5亿,最高CGI日请 ...

  6. Spring Boot 属性配置&自定义属性配置

    在使用spring boot过程中,可以发现项目中只需要极少的配置就能完成相应的功能,这归功于spring boot中的模块化配置,在pom.xml中依赖的每个Starter都有默认配置,而这些默认配 ...

  7. 概率dp - UVA 11021 Tribles

    Tribles Problem's Link: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=33059 Mean: 有k个细 ...

  8. JavaScript语言精粹读书笔记- JavaScript对象

    JavaScript 对象 除了数字.字符串.布尔值.null.undefined(都不可变)这5种简单类型,其他都是对象. JavaScript中的对象是可变的键控集合(keyed collecti ...

  9. IoC最大的好处是什么

    IoC最大的好处是什么?因为把对象生成放在了XML里定义,所以当我们需要换一个实现子类将会变成很简单(一般这样的对象都是实现于某种接口的),只要修改XML就可以了,这样我们甚至可以实现对象的热插拨(有 ...

  10. malloc 函数本身并不识别要申请的内存是什么类型

    malloc 函数本身并不识别要申请的内存是什么类型,它只关心内存的总字节数.我 们通常记不住 int, float 等数据类型的变量的确切字节数. 例如 int 变量在 16 位系统 下是 2 个字 ...