繁体   English   中英

如何使用指针1分配文件名?

[英]How to assign a filename with a pointer one?

我确实有一个用指针作为参数创建的函数。 该参数将用于保存最终图像。 每当我想用所需参数调用该函数时,我希望保存的图像文件具有指定的名称。 我告诉你如何:

void SaveImage(IplImage *img)
{
...
cvSaveImage("C:/img.png", img);
...
}

调用函数时:SaveImage(image1),我想在我的C:/上创建一个图像,其名称为image.png

你能帮帮我吗?

显然,你不能用唯一真正可行的答案来回答这个问题,因为你得到了投票......

所以,我会改写我的回答:

您需要将两个变量传递给SaveImage:

void SaveImage(const char *name, IplImage *img)
{
   ...
   cvSameImage(name, img);
}

然后您的调用代码必须生成正确的名称,例如:

SaveImage("c:\image.png", image);

SaveImage("c:\other.png", other);

当然,现在,如果您真正想要的只是一个唯一的名称,而不是反映代码中变量名称的名称,那么还有很多其他的可能性,例如使用包含序列号的格式化字符串,随机数, tmpnam()或其他类似的方案。

据我所知,您希望使用传递对象的名称保存文件。

例如,在SaveImage(myImage); 它应该保存名为myImage.png的图像,对吗? 好。 这是不可能的,因为C ++没有这样的反射来检索对象的名称。 您应该尝试一些脏工作,使用MACRO对对象进行字符串化。

但是,如果要以不同的名称保存图像,可以使用static变量:

void SaveImage(IplImage *img)
{
...
static int num = 1;
cvSaveImage("C:/image"+ to_string(num++) +".png", img);
...
} 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM