web-dev-qa-db-fra.com

Erreur HighGui d'exécution Runtime - "ERREUR HIGHGUI: V4L/V4L2: VIDIOC_S_CROP". Croix ouverte compilée. Hôte = 64 bits Ubuntu 12.04. Cible = ARM-Cortex-A9

Je suis un débutant chez OpenCV et fais de mon mieux pour obtenir une application simple qui s'exécute sur une plate-forme intégrée. J'ai compilé OpenCV 2.4.4 et l'ai construit WITH_GTK = ON, WITH_UNICAP = ON, WITH_V4L = ON selon les besoins pour la prise en charge de la caméra et de l'interface graphique. L'exemple de code suivant compile sur l'hôte:

#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;
}

Compiler cette manière pour les liens statiques:

arm-linux-gnueabi-g ++ -mcpu = cortex-a9 -mfpu = neon -static opencv_camshow.cpp -o exe -I/home/om/OpenCV-2.4.4/plates-formes/linux/build_soft/install/include -L/home/om/OpenCV-2.4.4/plateformes/linux/build_soft/install/lib -L/home/om/OpenCV-2.4.4/plateformes/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 -lrt -lrt -lzlib -static

Voici le problème. Lorsque j'essaie d'exécuter le fichier exécutable 'exe' sur la cible, j'obtiens cette erreur d'exécution:

HIGHGUI ERROR: V4L/V4L2: Erreur OpenCV VIDIOC_S_CROP: erreur non spécifiée (la fonction n'est pas implémentée. Reconstruisez la bibliothèque avec le support de Windows, GTK + 2.x ou Carbon. Si vous êtes sur Ubuntu ou Debian, installez libgtk2.0-dev et pkg -config, puis réexécutez cmake ou configure le script) dans cvNamedWindow, fichier /home/om/OpenCV-2.4.4/modules/highgui/src/window.cpp, ligne 652

se terminer après avoir lancé une instance de 'cv :: Exception'

what (): /home/om/OpenCV-2.4.4/modules/highgui/src/window.cpp:652: erreur: (-2) La fonction n'est pas implémentée. Reconstruisez la bibliothèque avec le support Windows, GTK + 2.x ou Carbon. Si vous êtes sur Ubuntu ou Debian, installez libgtk2.0-dev et pkg-config, puis réexécutez cmake ou configurez le script dans la fonction cvNamedWindow.

J'ai réinstallé libgtk2.0-dev, pkg-config existe et OpenCV recompilé, mais cela n'a pas aidé. S'il vous plaît laissez-moi savoir si quelqu'un sait comment surmonter ce problème. Merci d'avance. ~ Om

Plus d'infos: J'ai compris la cause de ce problème mais je ne l'ai pas encore résolu ...

De mon point de vue, le problème réside dans les scripts d’opencv. Il ne reconnaît pas l'existence de GTK et donc des compilations croisées sans support de gtk. Ceci après avoir vérifié que la bibliothèque gtk basée sur arm est présente dans le dossier lib de la chaîne d'outils et que son chemin est exporté vers les chemins système.

11
om9

Après avoir exécuté l'instruction cmake. Vérifiez si la sortie de cmake inclut le texte suivant: V4L/V4L2: Using libv4l.

Si ce n'est pas le cas, installez v4l2ucp, v4l-utils et libv4l-dev à partir du gestionnaire de paquets synaptic. Puis cmake et reconstruire à nouveau.

Cela a fonctionné pour moi, mais j'utilisais OpenCV avec des liaisons python sous Ubuntu 12.04.

10
Varun Kumar

Pour effectuer une compilation croisée, vous devez indiquer à pkg-config de rechercher le chemin correct (par défaut, ce seront vos fichiers de configuration/.pc de l'hôte!).

Sur le site Web de pkg-config

  • recherche dans les répertoires listés dans $ PKG_CONFIG_PATH
  • lorsque $ PKG_CONFIG_LIBDIR est spécifié, il écrasera le répertoire compilé dans le répertoire par défaut (par exemple,/usr/lib/pkgconfig) et le répertoire PKG_CONFIG_PATH. Notez que lors de la spécification de PKG_CONFIG_LIBDIR, pkg-config ignorera complètement le contenu de PKG_CONFIG_PATH, même si la documentation indique des éléments différents.
2
drahnr

Erreur d'openv highgui

Avoir à réinstaller opencv en utilisant cmake

git clone https://github.com/Itseez/opencv.git
cd ~/opencv 
mkdir release 
cd release 
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_IPP=OFF ..
make -j4 Sudo 
make install
export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages
0