您的位置:首页 > 其它

ubuntu中从同一个文件夹中读取无命名规则的多个文件

2014-09-10 22:27 323 查看
#include <stdio.h>

#include <string>

#include <math.h>

#include <glob.h>

#include <cv.h>

#include <highgui.h>

#include <cxcore.h>

using namespace std;

using namespace cv;

int main(int argc,char **argv)

{

IplImage *pFrame;

string InputPath;

InputPath=argv[1];

// InputPath="/home/gxb/build/bin/0123"; 直接传入路径

if (InputPath.at(InputPath.length()-1)!='/')

InputPath+='/';

glob_t g={0};

char patt[1024];

snprintf(patt, 512, "%s%s", InputPath.c_str(),"*.jpg");

glob(patt, GLOB_DOOFFS, NULL, &g);

for(int i=0;i<g.gl_pathc;i++)

{

char *p = g.gl_pathv[i];

pFrame=cvLoadImage(p,-1);

vector<int> labels;

vector<string> image_name;

string label_name=basename(p); //The images must be named as 'label_name.jpg'

string label,name,temp;

int split=label_name.find('_');

if (split>0)

{

label=label_name.substr(0,split); //返回一个从指定位置开始的指定长度的字符串

temp=label_name.substr(split+1,label.find('.'));

name=temp.substr(0,temp.find('.')); //或者直接name=label_name.substr(split+1, label.find('.')); //copy from '_" to '.jpg'

}

//printf("%d, %s\n", atoi(label.c_str(),name.c_str());

cout<<label<<endl;

cout<<name<<endl;

labels.push_back(atoi(label.c_str());

image_name.push_back(name);

system(0);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐