在做分类器时,前期样本采集生成pos.txt或是neg.txt文件,正样本pos.txt中每行内容包含图像文件名,框选目标个数,目标位置(x,y,w,h),本文内容意在编写程序读取txt中内容,自动将图像对应目标位置裁剪出来,后续对裁剪出来的目标做尺寸归一化,然后做分类器训练。
第一步内容是:读取txt中每行内容。写的测试小程序如下:
#include "stdafx.h"
// for filelisting
#include <stdio.h>
#include <io.h>
// for fileoutput
#include <string>
#include <fstream>
#include <sstream>
#include<iostream>
using namespace std;
#define MAX_LINE 1024 //定义txt中最大行数。可调整更改
int main()
{
char buf[MAX_LINE]; /*缓冲区*/
FILE *fp; /*文件指针*/
int len; /*行字符个数*/
if ((fp = fopen("test.txt", "r")) == NULL)
{
perror("fail to read");
exit(1);
}
while (fgets(buf, MAX_LINE, fp) != NULL)
{
len = strlen(buf);
buf[len - 1] = '\0'; /*去掉换行符*/
printf("%s %d \n", buf, len - 1);
}
return 0;
}
我的测试目录下,test.txt内容为:
1abc
2/22.jpg
4
5.jpg
你/从.jpg
12
13
实际输出如下:
能读取每行的中文,英文,数字,小数点,符号等内容。
本文仅做批量图像指定区域ROI裁剪并保存程序的测试demo前期。