Я начинаю работать в OpenCV и стараюсь, чтобы на простом приложении было запущено простое приложение. Я перекрестно скомпилировал OpenCV 2.4.4 и построил его WITH_GTK = ON, WITH_UNICAP = ON, WITH_V4L = ON по мере необходимости для поддержки камеры и GUI. Следующий пример кода кросс-компиляции на хосте:
#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;
}
Компилирование этого способа для статического связывания:
arm-linux-gnueabi-g++ -mcpu = cortex-a9 -mfpu = neon -static opencv_camshow.cpp -o exe -I/home/om/OpenCV-2.4.4/platform/linux/build_soft/install/include -L/home/om/OpenCV-2.4.4/platform/linux/build_soft/install/lib -L/home/om/OpenCV-2.4.4/platform/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
Вот проблема. Когда я пытаюсь запустить исполняемый файл "exe" на целевой, я получаю эту ошибку времени выполнения:
HIGHGUI ERROR: V4L/V4L2: VIDIOC_S_CROP Ошибка OpenCV: ошибка Unspecified (функция не реализована). Перестройте библиотеку с поддержкой Windows, GTK + 2.x или Carbon. Если вы находитесь на Ubuntu или Debian, установите libgtk2.0-dev и pkg-config, затем повторно запустите cmake или настройте script) в cvNamedWindow, файл /home/om/OpenCV -2.4.4/modules/highgui/src/window.cpp, строка 652
завершение вызова после вызова экземпляра 'cv:: Exception'
what():/home/om/OpenCV-2.4.4/modules/highgui/src/window.cpp:652: error: (-2) Функция не реализована. Перестройте библиотеку с поддержкой Windows, GTK + 2.x или Carbon. Если вы находитесь на Ubuntu или Debian, установите libgtk2.0-dev и pkg-config, затем повторно запустите cmake или настройте script в функции cvNamedWindow
Я повторно установил libgtk2.0-dev, pkg-config существует и перекомпилировал OpenCV, но это не помогло. Пожалуйста, дайте мне знать, если кто-то знает, как преодолеть эту проблему. Заранее спасибо. ~ Ом
Дополнительная информация: Я понял, что вызывает эту проблему, но еще не исправил ее...
Из моего понимания проблема заключается в сценариях cmake opencv. Он не признает существование GTK и, следовательно, кросс-компиляции без поддержки gtk. Это после того, как убедитесь, что библиотека gtk на основе рук присутствует в папке lib toolchain и ее путь экспортирован в системные пути.