0

重複の可能性:
C++はintとstringをchar*に変換します

私が使用する関数は次のようになります。

int cvSaveImage(const char* filename,const CvArr* image);

この関数は、const char*最初のパラメーターとしてを必要とします。例えば:

cvSaveImage("ImageName",img)

正しいでしょう。

intただし、変数値「ImageName」に「Name」の代わりに入れたいと思います。私はこのようなことを試しましたが、まったく機能せず、クラッシュします:

int num = 10;
char buffer[1024];
sprintf(buffer,"Image%d",num);
cvSaveImage((const char *)buffer,img);

何か案は?

4

2 に答える 2

2

ファイルの拡張子を指定する必要があります。これが、openCVが書き込み用のフォーマットを作成する唯一の方法です。OpenCVは例外をスローします。これが、プログラムがクラッシュする原因である可能性が最も高いです。

また、新しいプロジェクトに取り組んでいる場合は、openCVのC++インターフェースへの移行を検討してください。それははるかに構造化されており、より多くの機能を備えており、またお勧めです。

于 2012-07-06T10:54:48.347 に答える
0

文字列を使用している場合、この関数はあなたのトリックを行う必要があります:

#include <sstream>
#include <string>

std::string IntToString(int N)
{
    ostringstream ss("");
    ss << N;
    return ss.str();
}
于 2012-07-06T11:07:51.163 に答える