去除文件内容为空额文件(python /c++ opencv)
2015-11-06 18:45
597 查看
利用opencv的detector所截取的人脸图像有时候为空(漏检),针对这种情况,可以用Python判断文件大小,如果为零,去除。或c++和opencv判断img.empty(),去除空文件。代码如下:
Python版:
本来是想通过
import cv2
img=cv2.imread(filename)
img.empty()
判断文件是否为空,然而Python中numpy对mat的存储格式是numpy.array,没有empty属性,只是可以看type(img)为‘NoneType’,但不知道如何写该条判断语句。留待后面有时间实现,作为增补。
c++版:
利用opencv的detector所截取的人脸图像有时候为空(漏检),针对这种情况,可以用Python判断文件大小,如果为零,去除。或c++和opencv判断img.empty(),去除空文件。代码如下:
Python版:
import os fly = open('fy.txt','wb') fln = open('fn.txt','wb') fl=open('list.txt','rb') line = fl.readlines() for li in line: li = li.strip() size = os.path.getsize(li) if size==0: fln.write(li+'\n') else: fly.write(li+'\n') fl.close() fln.close() fly.close()
本来是想通过
import cv2
img=cv2.imread(filename)
img.empty()
判断文件是否为空,然而Python中numpy对mat的存储格式是numpy.array,没有empty属性,只是可以看type(img)为‘NoneType’,但不知道如何写该条判断语句。留待后面有时间实现,作为增补。
c++版:
#include<opencv.hpp> #include <iostream> #include <stdio.h> #include<string> #include<fstream> using namespace std; using namespace cv; int main() { int num = 0; string strList = "list.txt"; string strListNew = "Eniminate.txt"; ifstream ifsList(strList.c_str()); ofstream ofsList(strListNew); if (ifsList.fail()) { printf("open list failed\n"); return -1; } if (ofsList.fail()) { printf("open listNew failed\n"); return -1; } char szPath[256]; while (!ifsList.eof()) { memset(szPath, 0, sizeof(char)* 256); ifsList >> szPath; Mat img = imread(szPath); if (img.data) { ofsList << szPath << endl; } } ifsList.close(); ofsList.close(); return 0; }
相关文章推荐
- c语言表白!!!!(ps 偶然看到的)
- C语言文法推导
- 利用VS根据文件目录结构创建C++工程自己简单实现的方法
- c++序列容器
- vc++各种文件的作用
- c语言学习之基础知识点介绍(十八):几个修饰关键字和内存分区
- C++ operator关键字(重载操作符)
- 100盏灯的问题(C语言实现)
- C++中不要在写void类型啦
- vs2013 c++小代码运行完了不退出的方法
- C++获取数字证书的序列号
- 一起用C++写个轻量的搜索引擎(一)
- C++学习:模板类学习
- C语言:浮点数在内存中的表示
- c++ inline
- C语言文件与目录(五)移动与复制
- C++进阶学习——单向链表的实现
- 用C语言实现对冗余层发送的数据包进行过滤判断处理
- C++中的友元
- STL容器之map与hash_map