【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 ...
随机推荐
- 插入节点insertBefore()
http://www.imooc.com/code/1699 插入节点insertBefore() insertBefore() 方法可在已有的子节点前插入一个新的子节点. 语法: insertBef ...
- 基于HTML5自定义文字背景生成QQ签名档
分享一款利用HTML5实现的自定义文字背景应用,首先我们可以输入需要显示的文字,并且为该文字选择一张背景图片,背景图片就像蒙版一样覆盖在文字上.点击生成QQ签名档即可将文字背景融为一体生成另外一张图片 ...
- [fork]Linux中的fork函数详解
---------------------------------------------------------------------------------------------------- ...
- oracle查询数据库最大连接数等信息
.当前的数据库连接数 select count(*) from v$process where program='ORACLE.EXE(SHAD)'; .数据库允许的最大连接数 select valu ...
- Fastcgi_Finish_Request 提高页面响应速度
当PHP运行在FastCGI模式时,PHP FPM提供了一个名为fastcgi_finish_request的方法.按照文档上的说法,此方法可以提高请求的处理速度,如果有些处理可以在页面生成完后再进行 ...
- Cloudera公司主要提供Apache Hadoop开发工程师认证
Cloudera Cloudera公司主要提供Apache Hadoop开发工程师认证(Cloudera CertifiedDeveloper for Apache Hadoop ,CCDH)和Apa ...
- iOS 基于OpenCV图像比较的常见方法
先列个大纲 1.模板匹配 2.直方图比较 3.感知哈希算法 4.特征点匹配
- java 反序列化漏洞检测及修复
Jboss.Websphere和weblogic的反序列化漏洞已经出来一段时间了,还是有很多服务器没有解决这个漏洞: 反序列化漏洞原理参考:JAVA反序列化漏洞完整过程分析与调试 这里参考了网上的 J ...
- Rename a local and remote branch in git
If you have named a branch incorrectly AND pushed this to the remote repository follow these steps b ...
- iOS开发之 -- 获取设备的唯一标示符
各种获取设备唯一标识的方法介绍 一.UDID(Unique Device Identifier) UDID的全称是Unique Device Identifier,它就是苹果iOS设备的唯一识别码,它 ...