C++ Code besser verstehen und fixen

skusi

Lt. Junior Grade
Registriert
Juli 2014
Beiträge
270
Hallo,

ich möchte einen Code in manchen Stellen nur übersetzen. Soweit funktioniert das auch. Mein Problem ist, das er manche Sachen im Code nicht erkennt. Es kommt die Meldung ist nicht definiert (Siehe Bild)
Ich habe in Visual Studio 2022 auch die openCV installiert und verknüpft. Bis auf 3 Fehler hat er auch alles erkannt.

Einer eine Idee, was mir fehlt?
Eine andere Frage ist, wie Wandel ich den Code wieder in einer .EXE um ?
 

Anhänge

  • Code1.png
    Code1.png
    4,9 KB · Aufrufe: 420
  • code2.png
    code2.png
    14,8 KB · Aufrufe: 412
  • Code3.png
    Code3.png
    15,7 KB · Aufrufe: 398
  • code4.png
    code4.png
    23,9 KB · Aufrufe: 424
Warum C++ ? Wenn man bereits mit grundlegenden Sachen überfordert ist, dann wird es schwer. C++ ist keine einfache Sprache und hat seine Stärken im Bereich embedded, Game-Engines und bei performance-kritischen Anwendungen.

cyWaitKey wird einfach nicht definiert sein. Dir fehlt also die Funktion oder der Import einer Libary mit der Funktion. Das andere sind vermutlich Variablen/Konstanten.

C++ muss kompiliert werden - du brauchst also einen C++ Compiler
 
Cokocool schrieb:
cyWaitKey wird einfach nicht definiert sein. Dir fehlt also die Funktion oder der Import einer Libary mit der Funktion. Das andere sind vermutlich Variablen/Konstanten.
Danke für die Info.
welche Libary fehlt mir ? Wie heißt sie ? Im Bild 2 habe ich alle aufgelistet, die ich drin habe.
 
Ohne mich im Detail mit C++ auszukennen, schau dir mal die ersten beiden include-Zeilen im 2. Screenshot an.
Einmal wurde "/", einmal "\" als "Verzeichnistrenner" genommen. Vermutlich geht nur eine Variante (unter Win normalerweise "\"), wodurch evtl. die eine Header-Datei nicht inkludiert werden kann.
 
  • Gefällt mir
Reaktionen: Skysnake
skusi schrieb:
Danke für die Info.
welche Libary fehlt mir ? Wie heißt sie ? Im Bild 2 habe ich alle aufgelistet, die ich drin habe.
das müsstest du eigentlich wissen, schließlich sind die zeilen bzw die konstanten ja irgendwie im Code gelandet und müssen eine bedeutung haben.
Deine Includes sehen auch strange aus mit mal / und \
 
  • Gefällt mir
Reaktionen: Skysnake und Cokocool
Ich würde grundsätzlich empfehlen, bevor man eine library nutzt erstmal 30-90 Minuten die offizielle Einführung dazu zu lesen. So beantwortet sich womöglich schon deine Frage.
 
Könntest du mal cvWaitKey(20) in waitKey(20) abändern? Die ersteren Version kommt noch aus uralt-OpenCV-Zeiten. Eigentlich müsste es auch reichen, nur #include <opencv2/opencv.hpp> einzubinden (include mit highgui einmal auskommentieren).
 
  • Gefällt mir
Reaktionen: kuddlmuddl und BeBur
Das konnte ich machen. cvWaitKey in waitKey funktioniert. Bleibt nur noch fehler 2 und 3. Hast du da ne idee ?
 
skusi schrieb:
Einer eine Idee, was mir fehlt?
Ja, Du versuchst ein OpenCV-Programm, welches unter OpenCV 3.x erstellt wurde, mit OpenCV 4.x zu übersetzen.

Irgendwann haben sich die Bezeichner geändert, in der Regel steht nun für CV_irgendwas nur noch cv::Irgendwas. Konkret also: cv::CAP_PROP_FRAME_WIDTH etc.
 
  • Gefällt mir
Reaktionen: ZuseZ3, BeBur, Powl_0 und eine weitere Person
Ja das ist es! Vielen Dank an euch zwei. Die Version war das Problem.
 
das müsste die #include <opencv2/videoio.hpp> sein...dort sind diese enums hinterlegt
 
3PiOh schrieb:
das müsste die #include <opencv2/videoio.hpp> sein...dort sind diese enums hinterlegt
Mit #include <opencv2/opencv.hpp> wird eh alles geladen - da sollte der videoio eigentlich nicht nötig sein.

Edit: Das Gleiche hast du ja vor 17 Min selbst geschrieben - sorry :D
 
stimmt, war auch als TEs Hinweis gemeint, dass da noch 2 weitere Fehler auftauchen...aber es scheint ja jetzt gelöst zu sein.
 
dvor schrieb:
Übersetzungen haben immer Quelle und Ziel. Hier scheint das Ziel C++ zu sein. Was ist die Quelle?
Es geht eher um andere Übersetzungen, so wie hier das wunderschöne Wort, das im Original wohl mal "camera" hieß:
1649940331276.png
 
@TE: Woher stammt denn der Code? Hast du den Code Legal erhalten?

Deine Fragen legen nahe, dass das Projekt etwas zu weit von deinem Wissenshorizont entfernt ist.
 
Da es Mitte April ist und es um OpenCV geht wird es wohl um eine Uni Aufgabe gehen und aus dem Internet kopierten Code aus irgendeinem Artikel oder Tutorial.
 
Zurück
Oben