Russian Qt Forum
Ноябрь 25, 2024, 18:50 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: OpenCV (MinGW32) + Qt  (Прочитано 8053 раз)
Disa
Гость
« : Ноябрь 02, 2012, 11:06 »

Добрый день.

Волею судеб, я никак не могу переставить нормально себе vs 2010 (точнее нормально удалить предыдущую версию). Про это отдельный топик можно заводить Улыбающийся Ну суть не в этом.

Собрал OpenCV 2.4.2 под MinGW. Собралось все успешно. Теперь есть две папки с библиотеками (bin с *.dll и lib с *.dll.a).
В pro-file все подключил, вот так вот:

Код:
INCLUDEPATH += C:\opencv_2_4_2\include

#это для красоты, чтоб в релизе оставлять только, что нужно релиз проекту...
CONFIG(release,debug|release)
{
  LIBS += C:\opencv_2_4_2\bin\*.dll
}

CONFIG(debug,debug|release)
{
    LIBS += C:\opencv_2_4_2\bin\*.dll
}

Либы вроде подключаются, т.к. если папку прописывать не правильно, вылезает кучу error'ов с undefined reference.
Но после пересборки и запуска проекта (рабочего (правда под версией OpenCV 2.3.8 ), инфа 100%, код не мой) - вылезает:

The program has unexpectedly finished.
*.exe exited with code -1073741515


И еще, я видимо туповат, но *.a либы должны же подключаться, как и обычные *.lib?
То есть LIBS += -Lпуть -lимя либы, без расширения (только вот без 'a' или без 'dll.a'?)

В общем за любую помощь буду благодарен!
Записан
QtCoder
Гость
« Ответ #1 : Ноябрь 02, 2012, 13:13 »

Добавьте C:\opencv_2_4_2\bin в PATH.
Записан
Disa
Гость
« Ответ #2 : Ноябрь 02, 2012, 16:14 »

Не помогло Грустный
Причем экземплы компиляться без проблем, но не работают, а вот собранные make-
install'ом работают. Дурдом какой-то.
« Последнее редактирование: Ноябрь 02, 2012, 16:20 от Disa » Записан
Bepec
Гость
« Ответ #3 : Ноябрь 02, 2012, 16:52 »

Выложите код проекта. Возможно вы добавляете не все библиотеки, необходимые для работы.

Когда я экспериментировал с OpenCV это стоило мне ммм... двух дней разборки почему это не работает.
Записан
Disa
Гость
« Ответ #4 : Ноябрь 02, 2012, 23:21 »

В проекте более 10 классов, там обернутый алгоритм с применением CV + GUIшка и парсер с cv камеры в QImage.
Выложить не могу, проект коммерческий.

А нет какого-нибудь макроса или функции для вылавливания cvшных ошибок (как в openGLе)?

Ну я добавляю все dllки которые были при сборки.
У знакомых, когда компилят проект студии - все окей. Я в начале грешил, что версии разные, но семплы которые с OpenCV тоже не пашут... Компиляться, но ничего не происходит. В Application Outputе и Compile Outupe все вроде нормально.
Мб это из-за сборки под MinGW? Но я собирал для MinGW32 и в Creatorе тоже выставляю этот же компилер (Qt 4.8.2 MinGW).

PS: Я уже кстати не первый раз сталкиваюсь с траблами при сборках Make и CMake, мб руки не оттуда Грустный
« Последнее редактирование: Ноябрь 02, 2012, 23:34 от Disa » Записан
Bepec
Гость
« Ответ #5 : Ноябрь 02, 2012, 23:26 »

Disa - ничем помочь не могу. Шлем телепата отняли почти 2 года назад при регистрации на форуме Улыбающийся

Записан
Disa
Гость
« Ответ #6 : Ноябрь 02, 2012, 23:37 »

Ну мне хотя бы семп любой попробовать. Вот, например, разделения fg и bg (Qt console app):

main.cpp:
Код
C++ (Qt)
#include "opencv2/core/core.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/video/background_segm.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <stdio.h>
 
using namespace std;
using namespace cv;
 
static void help()
{
printf("\nDo background segmentation, especially demonstrating the use of cvUpdateBGStatModel().\n"
"Learns the background at the start and then segments.\n"
"Learning is togged by the space key. Will read from file or camera\n"
"Usage: \n"
" ./bgfg_segm [--camera]=<use camera, if this key is present>, [--file_name]=<path to movie file> \n\n");
}
 
const char* keys =
{
"{c |camera   |true    | use camera or not}"
"{fn|file_name|tree.avi | movie file             }"
};
 
//this is a sample for foreground detection functions
int main(int argc, const char** argv)
{
help();
 
CommandLineParser parser(argc, argv, keys);
bool useCamera = parser.get<bool>("camera");
string file = parser.get<string>("file_name");
   VideoCapture cap;
   bool update_bg_model = true;
 
   if( useCamera )
       cap.open(0);
   else
cap.open(file.c_str());
parser.printParams();
 
   if( !cap.isOpened() )
   {
       printf("can not open camera or video file\n");
       return -1;
   }
 
   namedWindow("image", CV_WINDOW_NORMAL);
   namedWindow("foreground mask", CV_WINDOW_NORMAL);
   namedWindow("foreground image", CV_WINDOW_NORMAL);
   namedWindow("mean background image", CV_WINDOW_NORMAL);
 
   BackgroundSubtractorMOG2 bg_model;//(100, 3, 0.3, 5);
 
   Mat img, fgmask, fgimg;
 
   for(;;)
   {
       cap >> img;
 
       if( img.empty() )
           break;
 
       //cvtColor(_img, img, COLOR_BGR2GRAY);
 
       if( fgimg.empty() )
         fgimg.create(img.size(), img.type());
 
       //update the model
       bg_model(img, fgmask, update_bg_model ? -1 : 0);
 
       fgimg = Scalar::all(0);
       img.copyTo(fgimg, fgmask);
 
       Mat bgimg;
       bg_model.getBackgroundImage(bgimg);
 
       imshow("image", img);
       imshow("foreground mask", fgmask);
       imshow("foreground image", fgimg);
       if(!bgimg.empty())
         imshow("mean background image", bgimg );
 
       char k = (char)waitKey(30);
       if( k == 27 ) break;
       if( k == ' ' )
       {
           update_bg_model = !update_bg_model;
           if(update_bg_model)
            printf("Background update is on\n");
           else
            printf("Background update is off\n");
       }
   }
 
   return 0;
}

*.pro
Код:
QT += core

QT -= gui

TARGET = cv_test
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app

INCLUDEPATH += C:\opencv_2_4_2\include

CONFIG(release, debug|release) {
  LIBS += C:\opencv_2_4_2\bin\*.dll
}

CONFIG(debug,debug|release) {
  LIBS += C:\opencv_2_4_2\bin\*.dll
}

SOURCES += main.cpp

Список dllек:
libopencv_calib3d242.dll
libopencv_contrib242.dll
libopencv_core242.dll
libopencv_features2d242.dll
libopencv_flann242.dll
libopencv_gpu242.dll
libopencv_highgui242.dll
libopencv_imgproc242.dll
libopencv_legacy242.dll
libopencv_ml242.dll
libopencv_nonfree242.dll
libopencv_objdetect242.dll
libopencv_photo242.dll
libopencv_stitching242.dll
libopencv_video242.dll
libopencv_videostab242.dll
opencv_ffmpeg242.dll

Все компилиться, но ничего не происходит (только консоль вылезает и там сабж про нажатие RETURN). Сам собранный семпл работает (тот, что собрался make-installом).
« Последнее редактирование: Ноябрь 03, 2012, 00:14 от Disa » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.177 секунд. Запросов: 21.