Ich bin ein Anfänger bei OpenCV und versuche mein Bestes, um eine einfache Anwendung zu erhalten, die auf einer eingebetteten Plattform läuft. Ich kompilierte OpenCV 2.4.4 und baute es WITH_GTK = ON, WITH_UNICAP = ON, WITH_V4L = ON, wie für die Kamera und GUI-Unterstützung benötigt. Der folgende Code kompiliert Quer auf host:Runtime Opencv HighGui Fehler- "HIGHGUI FEHLER: V4L/V4L2: VIDIOC_S_CROP". Opencv-Kreuz kompiliert. Host = 64 Bit Ubuntu 12.04. Ziel = ARM-Cortex-A9
#include <opencv/cv.h>
#include <opencv/highgui.h>
using namespace cv;
int main(int, char**)
{
VideoCapture cap(0); // open the default camera
if (!cap.isOpened()) // check if we succeeded
return -1;
Mat edges;
namedWindow("edges", 1);
for (;;) {
Mat frame;
cap >> frame; // get a new frame from camera
cvtColor(frame, edges, CV_BGR2GRAY);
GaussianBlur(edges, edges, Size(7, 7), 1.5, 1.5);
Canny(edges, edges, 0, 30, 3);
imshow("edges", edges);
if (waitKey(30) >= 0)
break;
}
return 0;
}
Kompilieren auf diese Weise für statisches Linken:
Arm-Linux-gnueabi-g ++ = -mcpu cortex-a9 -mfpu = Neon -static opencv_camshow.cpp -o exe -I/home/om/OpenCV-2.4.4/plattformen/linux/build_soft/install/include -L/home/om/OpenCV-2.4.4/plattformen/linux/build_soft/install/lib -L/home/om/OpenCV-2.4.4/plattformen/linux/build_soft/3rdparty/lib -lopencv_calib3d -lopencv_features2d -lopencv_flann -lopencv_imgproc -lopencv_core -lopencv_contrib -lopencv_highgui -lopencv_ml -lopencv_video -lopencv _flann -lopencv_photo -lopencv_videostab -pthread -lm -lrt -lzlib -static
Hier ist das Problem. Wenn ich versuche, die ausführbare Datei 'exe' auf dem Ziel zu laufen, bekomme ich diese Laufzeitfehler:
HIGHGUI ERROR: V4L/V4L2: VIDIOC_S_CROP OpenCV. Fehler: Unbekannter Fehler (Die Funktion ist nicht implementiert Rebuild die Bibliothek mit Windows-, GTK + 2.x- oder Carbon-Unterstützung Wenn Sie unter Ubuntu oder Debian sind, installieren Sie libgtk2.0-dev und pkg-config, führen Sie dann cmake oder configure script erneut aus) in cvNamedWindow, file/home/om/OpenCV -2.4.4/modules/highgui/src/window.cpp, Linie 652
terminate nach dem werfen einer Instanz von 'cv :: Exception' genannt
was(): /home/om/OpenCV-2.4 .4/modu les/highgui/src/window.cpp: 652: Fehler: (-2) Die Funktion ist nicht implementiert. Erstellen Sie die Bibliothek mit Windows-, GTK + 2.x- oder Carbon-Unterstützung neu. Wenn Sie auf Ubuntu oder Debian sind, libgtk2.0-dev und pkg-config, dann erneut ausführen cmake oder konfigurieren Skript in Funktion cvNamedWindow
ich neu installiert libgtk2.0-dev, pkg-config installieren existiert & neu kompiliert OpenCV, aber das hat nicht geholfen. Bitte lassen Sie mich wissen, wenn jemand weiß, wie er dieses Problem lösen kann. Danke im Voraus. ~ Om
Weitere Informationen: ich herausgefunden, was dieses Problem verursacht, aber noch nicht festgelegt ...
Von meinem Verständnis des Problem in der Cmake Skripte von opencv liegt. Es erkennt die Existenz von GTK nicht an und kompiliert daher ohne GTK-Unterstützung. Dies nachdem sichergestellt wurde, dass die arm-basierte gtk-Bibliothek im lib-Ordner der Toolchain vorhanden ist und ihr Pfad in Systempfade exportiert wird.
Vielleicht, [die] (http://stackoverflow.com/questions/14655969/opencv-error-the-function-is- nicht implementiert) könnte Ihnen helfen? –
Danke Etienne für Ihre Antwort. In meinem Fall versuche ich Cross-Compiling und ich habe alle Bibliotheken in der Toolchain. Auch die Pfade werden ordnungsgemäß exportiert. Ich habe das Problem aktualisiert, da der CMake an erster Stelle nicht in der Lage ist, gtk zu lokalisieren und daher Compiles ohne GTK-Unterstützung zu kompilieren. Ich versuche das zu beheben. – om9
Wenn 'ldd' auf dem Ziel verfügbar ist, überprüfen Sie, nach welchen Bibliotheken die ausführbare Datei sucht. –