我已将此功能用于读取目录中的照片:
vector<Mat> vImg;
Mat rImg;
DIR *dir;
struct dirent *file;
int count = 0;
std::vector<char*> arr;
if(argc >= 2){
char* imgFolder = argv[1];
if ((dir = opendir(imgFolder)) != NULL) {
while ((file = readdir(dir)) != NULL) {
std::string fn = file->d_name;
std::string ext = StringToUpper(fn.substr(fn.find_last_of(".") + 1));
if(ext == "JPG" || ext == "PNG" || ext == "JPEG") {
count += 1;
char* itm = new char[100];
strcat(itm, imgFolder);
strcat(itm, "/");
strcat(itm, file->d_name);
printf("%s\n",itm);
vImg.push_back(imread(itm));
}
}
closedir (dir);
问题在于第一次
之后vImg.push_back(imread(itm));
所有其他&#34; itm&#34;像这样弄脏了:
有人可以帮帮我吗? 谢谢! :)
答案 0 :(得分:4)
你的错误在这里:
char* itm = new char[100];
strcat(itm, imgFolder); // <-- oops
第一个strcat
应为strcpy
。否则,你会附加到未初始化的内存中。
此外,您永远不会在任何地方删除char
数组。