Runtime Opencv HighGui Error - "HIGHGUI ERROR: V4L/V4L2: VIDIOC_S_CROP". Скомпилирован Opencv. Host = 64 бит Ubuntu 12.04. Target = ARM-Cortex-A9

Я начинаю работать в 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 и ее путь экспортирован в системные пути.

Ответ 1

После выполнения инструкции cmake Убедитесь, что вывод cmake содержит следующий текст: V4L/V4L2: Using libv4l.

Если его нет, установите v4l2ucp, v4l-utils и libv4l-dev из диспетчера синаптических пакетов. Затем cmake и снова создайте.

Это сработало для меня, но я использовал OpenCV с привязками python на Ubuntu 12.04.

Ответ 2

Чтобы скомпилировать компиляцию, вам нужно сообщить pkg-config, чтобы найти правильный путь (по умолчанию это будут файлы вашего хоста /.pc!)

С сайта pkg-config

  • каталоги поиска, перечисленные в $PKG_CONFIG_PATH
  • когда указан параметр $PKG_CONFIG_LIBDIR, он переопределит скомпилированный в каталоге по умолчанию (например,/usr/lib/pkgconfig) и PKG_CONFIG_PATH. Обратите внимание, что при указании PKG_CONFIG_LIBDIR, pkg-config полностью игнорирует содержимое в PKG_CONFIG_PATH, даже если документация говорит о разных вещах.

Ответ 3

Ошибка Opencv highgui

Переустановить opencv с помощью 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