2013-03-11 2 views
0

포인터로 인수로 만든 함수가 있습니다. 이 인수는 이미지의 끝에 저장하는 데 사용됩니다. 원하는 매개 변수로 해당 함수를 호출하고 싶을 때마다 저장된 이미지 파일이 지정된 이름으로 지정되기를 원합니다. 나는 당신을 보여줄 방법 :포인터로 파일 이름을 할당하는 방법은 무엇입니까?

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

함수를 호출 : SaveImage (image1에), 내 C에 이미지를 갖고 싶어 :/이름의 image.png됩니다

당신이 날 그와 함께 도울 수 있습니까?

+0

'cvSaveImage ("C : /image.png", img);의 잘못된 점은 무엇입니까? – deepmax

+0

@M cvSaveImage (blabla)를 호출 할 때마다 blabla가 이전 img.png을 덮어 쓰고 저에게는 안전한 것으로 유지하고 싶습니다! 너는 그것을 볼 수 있니? –

+1

그 질문은 거의 이해할 수 없습니다. 죄송합니다. 이미지를 덮어 쓰지 않고 이미 저장된 이미지에 * 추가하는 방법을 묻고 있습니까? 또는 함수에 전달하는 변수의 이름과 이름이 같은 새 이미지를 만들겠습니까? –

답변

0

필자는 전달 된 개체의 이름으로 파일을 저장하려고합니다.

예를 들어, SaveImage(myImage); 후에는 이미지 이름을 myImage.png으로 저장해야합니다. 맞습니까? 잘. C++은 객체의 이름을 검색하는 데 그다지 반영하지 않았기 때문에 불가능합니다. 객체를 문자열 화하기 위해 MACRO를 사용하여 더러운 작업을 시도해야합니다. 때문에, 당신이 실제로 실행 가능한 유일한 대답이 질문에 대답 할 수없는, 분명히

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

그래, 그게 내가 원하는거야. –

2

: 당신이 다른 이름으로 이미지를 저장하려면

하지만,, 당신은 static 변수를 사용할 수 있습니다

를 : 당신은 SaveImage에 두 개의 변수를 전달해야

: 당신은 내 대답을 바꿔 것, 그래서 ...

을을 downvoted 얻을 당신이 실제로 원하는 모든이의 이름을 반영하는 것이 아니라, 고유 한 이름 인 경우, 물론,

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

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

지금 :

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

그런 다음 호출 코드는 다음과 같은 올바른 이름을 생성해야합니다 당신의 코드에 변수가 있다면, 일련 번호, 난수, tmpnam() 또는 다른 유사한 스키마를 포함하는 형식화 된 문자열을 사용하는 것과 같은 다른 가능성이 많이 있습니다.

+0

코멘트에 자신을 시인 한 것만 큼 좋은 분이 십니다 * 나쁜 대답이었습니다. * 그것이 downvoted 이유 *입니다. 이 대답은 더 좋습니다. –

관련 문제