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