opencv特征脸识别程序,读取CSV文件段程序,求详细解释!回答得好,加分!
staticvoidread_csv(conststring&filename,vector<Mat>&images,vector<int>&labels,charsep...
static void read_csv(const string& filename, vector<Mat>& images, vector<int>& labels, char separator = ';') {
std::ifstream file(filename.c_str(), ifstream::in);
if (!file) {
string error_message = "No valid input file was given, please check the given filename.";
CV_Error(CV_StsBadArg, error_message);
}
string line, path, classlabel;
while (getline(file, line)) {
stringstream liness(line);
getline(liness, path, separator);
getline(liness, classlabel);
if(!path.empty() && !classlabel.empty()) {
images.push_back(imread(path, 0));
labels.push_back(atoi(classlabel.c_str()));
}
}
} 展开
std::ifstream file(filename.c_str(), ifstream::in);
if (!file) {
string error_message = "No valid input file was given, please check the given filename.";
CV_Error(CV_StsBadArg, error_message);
}
string line, path, classlabel;
while (getline(file, line)) {
stringstream liness(line);
getline(liness, path, separator);
getline(liness, classlabel);
if(!path.empty() && !classlabel.empty()) {
images.push_back(imread(path, 0));
labels.push_back(atoi(classlabel.c_str()));
}
}
} 展开
1个回答
展开全部
这个东西以前做过,有点忘记了,不过这里就是读文件,然后得到标签,以 ; 为分隔对文件进行读取。 标签就是后来进行特征脸识别的“数据库”
追问
恩恩,是这个道理!images.push_back(imread(path, 0)); labels.push_back(atoi(classlabel.c_str()));什么意思?还有vector& images, vector& labels这种数据类型很奇怪,怎么看?
追答
你看看他调用的时候,Mat是不是在哪定义的或者类似于这样的vector Mat 或者 #define int Mat
labels是vector类型的push_back是他的命令,就是存进去的意思,atoi是字符串转整数
vector意思就是push_back只能存Mat类型的
vector意思就是push_back只能存int类型的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询