gpt4 book ai didi

c - OpenCV cvLoadImage 不接受 char* 作为文件名,但接受 argv[1]

转载 作者:行者123 更新时间:2023-11-30 14:29:18 30 4
gpt4 key购买 nike

我意识到这个问题之前已经被问过。我已阅读答案并尝试了解决方案,但它没有为我解决问题。

我在 Ubuntu 10.10(32 位)和 Eclipse C IDE 中使用 OpenCV 2.1。

我的问题:

如果我从文件中读取文本行,并将其存储在 char* 变量中并将其传递给 cvLoadImage,我什么也得不到。我从文件中读取的文本行是特定图像的完全定义的文件路径。

代码如下:

FILE *f = fopen("./input.txt","r");
char img1[50];
fgets(img1,50,f);
char* img3 = strtok(img1,"\n");
IplImage* frame = cvLoadImage(img3);

结果是帧现在为 0x00000000 并且没有图片

但是

如果我将相同的文本作为参数传递给可执行文件,我可以将 argv[1] 存储到 char* 中并将其传递给 cvLoadImage(),它会按预期读取图像。

代码如下:

char* img3 = argv[1];
IplImage* frame = cvLoadImage(img3);

我不确定这是什么原因。 :s

作为参数传递并在文件中传递的字符串正是:(包括引号)“/home/aharva/Documents/FYP/1a.jpg”

谢谢

最佳答案

您需要从文件中的字符串中删除引号。只有 shell 的解析器首先需要将路径正确地放入程序的 argv 列表中时才需要引号,即使如此,只有在文件路径包含嵌入空格的情况下才真正需要引号。

由于 fgets() 读取整行文本(直到\n),因此无需引用任何内容(尽管 50 个字符对于文件路径来说并不算多——您可能希望增加缓冲区大小) 。如果由于某种原因必须在文件中引用它,那么您需要在将其传递给 cvLoadImage() 之前删除它们。

关于c - OpenCV cvLoadImage 不接受 char* 作为文件名,但接受 argv[1],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4963594/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com