Ich habe diesen Code zum Anzeigen eines Bildes in C++ geschrieben.Zeige ein Bild mit C++
#include <opencv2/core/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
#include <string>
using namespace std;
using namespace cv;
int main(int x,char*y)
{
string Image_Name = y[1];
Mat image=imread(Image_Name);
if (image.empty())
{
cout << "This is invalid input" << endl;
return -1;
}
namedWindow("Lenna", WINDOW_NORMAL);
imshow("Lenna",image);
waitKey(0);
return 0;
}
Wenn ich versuche, es zu laufen, zeigt Compiler mir diese Fehler:
„Severity Code Beschreibung Projektdateizeile Fehler C2440 'Initialisierung': aus 'char' zu nicht konvertieren‚std :: basic_string, std :: Zuordner>‘OpencvTest E: \ c \ Programmieren eines Bildes zeigt \ opencvtest \ source.cpp 12"
und:
„Severity Code Beschreibung Projektdatei Leitungsfehler (aktiv) kein geeigneter Konstruktor besteht aus umwandeln "char" zu "std :: basic_string, std :: Allocator>" OpencvTest e: \ Programmierung C \ Angezeigt ein Bild \ OpencvTest \ Source.cpp 12 "
Kann mir jemand mit diesem Fehler helfen?
Danke für Ihre gute Antwort. Und es gibt nur ein Problem, das ich mit Ihrer Antwort habe: Warum sollte ich prüfen, ob "argc" gleich 2 ist? Becuase, wenn ich nicht verwende, Schleife für das Überprüfen, gibt es kein Problem mit meinem Code und es läuft erfolgreich. –
If wird normalerweise eine "Anweisung" genannt, da sie im Gegensatz zu einer Schleife nicht wiederholt wird. Der Punkt der Überprüfung für 'argc == 2' ist sicherzustellen, dass es zwei Argumente gibt: Das erste Argument ist immer der ausführbare Name (zB "a.out" oder "main.exe" - ich weiß nicht, wie Visual Studio Namen die resultierende ausführbare Datei) und das zweite Argument ist der Image-Name. Wenn es weniger Argumente gibt, liest das Programm immer noch die Daten bei argv [1], aber es wird Unsinn sein oder das Programm mit dem Zugriff außerhalb der Grenzen zum Absturz bringen. – iksemyonov