Sono un principiante in OpenCV e sto facendo del mio meglio per ottenere un'applicazione semplice in esecuzione su una piattaforma integrata. Ho compilato a croce OpenCV 2.4.4 e lo ho creato WITH_GTK = ON, WITH_UNICAP = ON, WITH_V4L = ON come necessario per il supporto della fotocamera e della GUI. Il seguente codice di esempio cross-compila sull'host:Errore Opencv HighGui di runtime- "HIGHGUI ERRORE: V4L/V4L2: VIDIOC_S_CROP". Opencv cross compilato. Host = 64bit Ubuntu 12.04. Target = 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;
}
compilazione in questo modo per il collegamento statico:
braccio-linux-gnueabi-g ++ -mcpu = Cortex-A9 -mfpu = neon -static opencv_camshow.cpp -o exe -I/home/om/OpenCV-2.4.4/piattaforme/linux/build_soft/install/include -L/home/om/OpenCV-2.4.4/piattaforme/linux/build_soft/install/lib -L/home/om/OpenCV-2.4.4/piattaforme/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
Ecco il problema. Quando provo ad eseguire il file eseguibile 'exe' sul bersaglio, ottengo questo errore di runtime:
HIGHGUI ERRORE: V4L/V4L2: VIDIOC_S_CROP OpenCV Errore:. Errore non specificato (La funzione non è implementata Ricostruire il libreria con supporto per Windows, GTK + 2.x o Carbon. Se sei su Ubuntu o Debian, installa libgtk2.0-dev e pkg-config, quindi esegui di nuovo cmake o configure script) in cvNamedWindow, file/home/om/OpenCV -2.4.4/modules/highgui/src/window.cpp, linea 652
terminare chiamato dopo il lancio un'istanza di 'cv :: eccezione'
quello(): /home/om/OpenCV-2.4 0,4/modu les/highgui/src/window.cpp: 652: errore: (-2) La funzione non è implementata. Ricrea la libreria con Windows, GTK + 2.x o Carbon support. Se siete su Ubuntu o Debian, installare libgtk2.0-dev e pkg-config, poi ri-eseguire cmake o configurare lo script in funzione cvNamedWindow
ho reinstallato libgtk2.0-dev, esiste pkg-config & ricompilati OpenCV, ma questo non ha aiutato. Per favore fatemi sapere se qualcuno sa come superare questo problema. Grazie in anticipo. ~ Om
Maggiori informazioni: ho capito che cosa sta causando questo problema, ma non è ancora stato risolto ...
Dalla mia comprensione del problema si trova negli script cmake di OpenCV. Non riconosce l'esistenza di GTK e quindi crosscompila senza supporto gtk. Questo dopo aver verificato che la libreria gtk basata su arm sia presente nella cartella lib della toolchain e il suo percorso esportato nei percorsi di sistema.
Forse [che] (http://stackoverflow.com/questions/14655969/opencv-error-the-function-is- non implementato) potrebbe aiutarti? –
Grazie Etienne per la tua risposta. Nel mio caso sto cercando di eseguire la compilazione e ho tutte le librerie nella toolchain. Anche i percorsi vengono esportati correttamente. Ho aggiornato il problema poiché il cmake al primo posto non è in grado di localizzare gtk e quindi crosscompiles senza il supporto GTK. Sto cercando di aggiustarlo. – om9
Se 'ldd' è disponibile sulla destinazione, controllare quali librerie l'eseguibile sta cercando. –