Ошибка Opencv на ARM

#c #opencv #arm #static-libraries

#c #opencv #arm #статические библиотеки

Вопрос:

Я надеюсь, что кто-нибудь сможет мне помочь. У меня есть файл c , в котором используются библиотеки opencv. Мне нужно получить исполняемый файл для ARM, в котором я должен его запустить. Мой исполняемый файл должен быть скомпилирован статическим компоновщиком.

Я не эксперт, поэтому извините, если я делаю что-то странное, я следую этим шагам:

Я загружаю opencv для библиотек ARM, собираю его с помощью cmake и без проблем получаю статические библиотеки ARM opencv.

Затем я пытаюсь скомпилировать свой файл c следующим образом:

  arm-linux-g   -static -o exampleWindows IPCamera.cpp `pkg-config --cflags --libs opencv`
 

И это работает, поэтому я получил исполняемый файл, я пишу:

  file executable 
 

И я получаю этот вывод:

   ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, for GNU/Linux    2.6.26, not stripped
 

Итак, кажется, что все в порядке, это формат ARM и статическая ссылка. Но когда я пытаюсь запустить этот исполняемый файл в моем ARM, появляется эта ошибка:

  OpenCV Error: Unspecified error (The function is not implemented. 
 Rebuild the library with Windows, GTK  2.x or Carbon support. 
 If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, 
 then re-run cmake or configure script) in cvNamedWindow, 
 file /home/jesus/opencv/opencv/modules/highgui/src/window.cpp, line 483
 terminate called after throwing an instance of 'cv::Exception'
  what():  /home/jesus/opencv/opencv/modules/highgui/src/window.cpp:483: error: (-2)    The function is not implemented.
 Rebuild the library with Windows, GTK  2.x or Carbon support. If you are on Ubuntu or   Debian, install libgtk2.0-dev and pkg-config, 
 then re-run cmake or configure script in function cvNamedWindow
 

Затем, поскольку я не эксперт, я попытался следовать тому, что говорится в сообщении об ошибке, поэтому я не загружаю libgtk2.0 в свою ubuntu, а затем снова создаю cmake и создаю для сборки статических библиотек ARM, но ничего не решается.

Итак, мне нужна помощь с этой ошибкой или скажите, в чем смысл, потому что кажется, что это просто, но я не знаю, что делать.

Вот мой код:

 #include <iostream>
#include <pthread.h>
#include <opencv2/opencv.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv/highgui.h>
#include <string.h>
#include <stdio.h>
#include <time.h>

using namespace std;
using namespace cv;

int main()
{
 cout<<"ready"<<endl;
 cv::Mat frame;

 cv::namedWindow("front", CV_WINDOW_NORMAL);
 cvMoveWindow("front", 0, 0);
 cvSetWindowProperty( "front", CV_WND_PROP_FULLSCREEN, CV_WINDOW_FULLSCREEN);

 return 0;
}
 

Большое вам спасибо, я надеюсь, что кто-нибудь сможет мне помочь.

Ответ №1:

Проблема в том, что вам нужно перестроить OpenCV с активированной поддержкой GTK. Необходимые шаги:

  1. Установите gtk ( sudo apt-get install libgtk2.0-dev , я думаю, вы это уже сделали ;)).
  2. Перестроить OpenCV:
    • Если вы установили его из репозиториев, переустановите его (я думаю, что это не так).
    • Если вы вручную создали OpenCV из исходного кода: запустите cmake с ним еще раз, убедившись, что опция WITH_GTK отмечена (вы можете использовать CMAKE GUI для активации этой опции).

    Как только файлы Makefile будут повторно сгенерированы с помощью CMAKE, запустите make make install и не забудьте ldconfig .

  3. Повторите попытку с вашим кодом 😉

Надеюсь, что это поможет!

Комментарии:

1. Спасибо за ваш ответ, Кейлл, это было так ясно. Я сделал все, что вы сказали, и снова та же ошибка, я искал какое-то решение, и я обнаружил, что, возможно, мне нужно установить больше библиотек перед make, но я это сделал, и я упрекнул cmake, и ничего. Я проверяю в CmakeCache.txt и флаг WITH_GTK=ВКЛЮЧЕН, так что я понятия не имею, в чем может быть проблема. Еще раз спасибо за ответ.

2. Я понял, что, как только я закончу выполнение Cmake, в выводе терминала появится GTK 2.x: НЕТ, поэтому я думаю, что это неправильно, но я понятия не имею, почему.

3. Вы должны попробовать использовать cmake-gui , чтобы узнать, правильно ли cmake (opencv) находит путь gtk

4. Привет, Кейлл, спасибо за ваш ответ. Я никогда не использовал cmake-gui, где я могу найти эту информацию??

5. В Ubuntu: sudo apt-get install cmake-gui

Ответ №2:

Проблема связана с тем, что вы не включили поддержку библиотеки GTK . Чтобы включить его

1) установите библиотеки GTK , если у вас их нет

2) перестроить библиотеки, включая this -DWITH_GTK=ON

надеюсь, что это сработает…

Ответ №3:

  1. запустите ccmake . и включите WITH_GTK и WITH_GTK_2_X
  2. выполнить make amp;amp; make install
  3. ldconfig