[英]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.