Jestem początkujący w OpenCV i staram się jak najlepiej uzyskać prostą aplikację działającą na platformie embedded. Skompilowałem krzyżowo OpenCV 2.4.4 i zbudowałem go WITH_GTK = ON, WITH_UNICAP = ON, WITH_V4L = ON w razie potrzeby dla obsługi kamery i GUI. Następujący kod próbki przekroju kompiluje się na gospodarzu:Runtime Błąd OpenCv HighGui - "HIGHGUI ERROR: V4L/V4L2: VIDIOC_S_CROP". Opracowano krzyż Opencv. Host = 64-bitowy system Ubuntu 12.04. Cel = 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;
}
Kompilacja ten sposób dla łączenia statycznego:
ramię Linux-gnueabi-g ++ -mcpu = Cortex-A9 -mfpu = neon -static opencv_camshow.cpp -o exe -I/home/om/OpenCV-2.4.4/platforms/linux/build_soft/install/include -L/home/om/OpenCV-2.4.4/platforms/linux/build_soft/install/lib -L/home/om/OpenCV-2.4.4/platforms/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
Oto problem. Kiedy próbuję uruchomić plik wykonywalny „exe” na tarczy, otrzymuję ten błąd wykonania:
HIGHGUI błąd: V4L/v4l2: VIDIOC_S_CROP OpenCV błędzie. Nieokreślony błąd (Funkcja nie jest realizowany Odbuduj biblioteka z obsługą Windows, GTK + 2.x lub Carbon Jeśli jesteś na Ubuntu lub Debian, zainstaluj libgtk2.0-dev i pkg-config, następnie uruchom ponownie cmake lub skonfiguruj skrypt) w cvNamedWindow, file/home/om/OpenCV -2.4.4/moduły/highgui/src/window.cpp, linia 652
terminate nazywany po wrzuceniu wystąpienie 'cv :: Exception'
co(): /home/om/OpenCV-2.4 .4/modu les/highgui/src/window.cpp: 652: error: (-2) Funkcja nie jest zaimplementowana. Przebuduj bibliotekę przy pomocy Windows, GTK + 2.x lub Carbon. Jeśli jesteś na Ubuntu i Debianie zainstalować libgtk2.0-dev i pkg-config, a następnie ponownie uruchomić CMake lub skonfigurować skrypt w funkcji cvNamedWindow
I ponownie zainstalowany libgtk2.0-dev, pkg-config istnieje & ponownie skompilowany OpenCV, ale to nie pomogło. Daj mi znać, jeśli ktoś wie, jak rozwiązać ten problem. Z góry dziękuję. ~ Om
Więcej informacji: zorientowali się, co jest przyczyną tego problemu, ale jeszcze nie naprawił ...
Z mojego zrozumienia problem leży w skryptach CUpewnij z OpenCV. Nie uznaje istnienia GTK, a zatem krzyżuje kompilacje bez obsługi gtk. To po upewnieniu się, że biblioteka GTK z ramieniem jest obecna w folderze lib biblioteki narzędziowej, a jej ścieżka jest eksportowana do ścieżek systemowych.
Może [że] (http://stackoverflow.com/questions/14655969/opencv-error-the-function-is- niezaimplementowany) może ci pomóc? –
Dzięki Etienne za odpowiedź. W moim przypadku próbuję krzyżować kompilację i mam wszystkie biblioteki w toolchain. Ścieżki są również poprawnie eksportowane. Zaktualizowałem ten problem, ponieważ cmake na pierwszym miejscu nie jest w stanie zlokalizować gtk, a zatem krzyżuje kompilacje bez obsługi GTK. Próbuję to naprawić. – om9
Jeśli '' ldd' jest dostępny dla celu, sprawdź, jakich bibliotek szuka plik wykonywalny. –