簡體   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