Hallo ich versuche, eine GUI für die Bildvergleichs-Software zu machen. Die Idee ist, ein Bild mit OPENFILENAME zu wählen, dann seine Adresse mit ofn.lpstrFile zu erhalten und dann ein Histogramm für dieses Bild zu erstellen. Also ich benutze:Wie speichere ich OFN.lpstrFile richtig?
return(ofn.lpstrFile);
Ich kann die Adresse cout oder es in eine XML-Datei schreiben und die Adresse korrekt ist, aber wenn ich versuche, das Histogramm zu tun, es mir alle Nullen gibt. Benimmt sich wie die Adresse war ungültig.
Irgendwelche Ideen?
mein Code:
string path=browse(); //getting the string from ofn.lpstrFile
path.c_str();
replace(path.begin(), path.end(), '\\', '/'); //converting backslash to slash also may be the problem
HistCreation(path,root_dir);
und
void HistCreation(string path,string root_dir) {
Mat img;
img = imread(path); // here if i manually enter the address everything works fine, if I insert the path then loads empty image
.
.
.
Ich habe auch versucht
char * cstr = new char[path.length() + 1];
std::strcpy(cstr, path.c_str());
Haben entweder nicht
arbeiten, um die Zeichenfolge
Verwenden Sie 'std :: wstring' für die Rückgabe von Strings. Das Zurückgeben von Zeigern ist eine schlechte Idee, wenn Sie nicht wissen, was Sie tun. –
Sie versuchen nicht, ein Histogramm des * Dateinamens * zu erstellen, oder? – molbdnilo
Danke für die Antwort! @BarmakShemirani Ich habe versucht, {wstring path = ofn.lpstrFile}, aber es heißt: kein passender Konstruktor, um von LPSTR in String zu konvertieren, wchar, char, wchar_t können Sie bitte genauer? –