Es sollte beachtet werden, dass ich Ubuntu 22.04 verwende, g++ Version 11.4.0 ist, den Neovim-Editor verwende und opencv mit heruntergeladen habe
Ich verwende den folgenden Code, der von der „Erste Schritte“-Seite der OpenCV-Website kopiert wurde:
Code: Select all
#include
#include
using namespace cv;
int main() {
std::string image_path = "Downloads/my-image.jpeg";
Mat img = imread(image_path, IMREAD_COLOR);
imshow("Display window", img);
int k = waitKey(0); // Wait for a keystroke in the window
return 0;
}
Als ich zum ersten Mal versuchte, es zu kompilieren, erhielt ich die Fehlermeldung „opencv2/opencv.hpp-Datei oder -Verzeichnis konnte
nicht gefunden werden“, aber ich habe das Problem behoben, nachdem ich den vollständigen Pfad angegeben hatte. Das einzige Problem ist, dass ich dies für wahrscheinlich mehr als 40 verschiedene .hpp-Dateien im opencv2-Verzeichnis tun musste. Ich kompilierte immer mit g++ opencv.cc -o opencv, und jedes Mal spuckte es den gleichen „Konnte nicht gefunden“-Fehler aus, verwies aber auf eine andere Datei, die ich dann bearbeiten würde.
Nach diesem schmerzhaften Prozess konnte ich endlich die Datei opencv.cc kompilieren ... zumindest dachte ich das. Unten ist der Fehler (in Englisch übersetzt), den ich jetzt erhalte, nachdem ich denselben grundlegenden G++-Befehl oben ausgeführt habe:
Code: Select all
/usr/bin/ld: /tmp/ccMkLdrJ.o: in function "main":
opencv.cc:(.text+0x74): reference not set to "cv::imread(std::__cxx11::basic_string const&, int)"
/usr/bin/ld: opencv.cc:(.text+0xd2): reference not set to "cv::imshow(std::__cxx11::basic_string const&, cv::_InputArray const&)"
/usr/bin/ld: opencv.cc:(.text+0x109): reference not set to "cv::waitKey(int)"
/usr/bin/ld: opencv.cc:(.text+0x120): reference not set to "cv::Mat::~Mat()"
/usr/bin/ld: opencv.cc:(.text+0x1bc): reference not set to "cv::Mat::~Mat()"
collect2: error: ld returned 1 exit status
Seltsam, ich denke, es war aus irgendeinem Grund einfach nicht möglich, die Datei opencv.hpp einzubinden ... obwohl jedes (zumindest diejenigen, die der Compiler nicht finden konnte) #include zu einer Datei im opencv2-Verzeichnis jetzt ein vollständiger Pfad ist, der bei usr/ beginnt. Ich habe keine Ahnung, was ich tun soll oder was hier passiert. Jede Hilfe wird geschätzt. Entschuldigung für die fehlerhafte Formatierung.