我有一个相当奇怪的问题。
我试图用以下内容打开上次修改后的图片:
std::string exec(string cmd) {
FILE* pipe = popen(cmd.c_str(), "r");
if (!pipe) return "ERROR";
char buffer[128];
std::string result = "";
if(fgets(buffer, 128, pipe) != NULL)
result = buffer;
pclose(pipe);
result[strlen(result.c_str()) - 1] = '\0';
return result;
}
int main(int argc, char **argv) {
string s = exec("ls ./images -1t | tail -1 &> text.txt");
Mat img = imread(s);
imshow("image", img);
waitKey(0);
return 0;
}
这段代码很好用。但每当我重命名文件并运行此代码时,imshow
部分崩溃,说图像的大小为0.当我尝试打印文件名时,我在两种情况下都是正确的。
为什么会这样?