Russian Qt Forum

Qt => Общие вопросы => Тема начата: demaker от Август 28, 2017, 15:34



Название: QtCreator + OpenCV
Отправлено: demaker от Август 28, 2017, 15:34
Пытаюсь установить либу OpenCV
Взял с http://opencv.org
Скачал release 3.3.0 win pack и sources

Я так понимаю ее надо собрать из исходников.
Но поясните как это сделать. 
Вообще не понятно куда крутить. :-[

Распаковал win pack  создалась папка opencv.
В build\bin две dll.
В build\x64\vc14\lib одна либа лежит opencv_world330

Пытался их про файл проекта прописать толку никакого.
Не видит функций из бибоиотеки.

Скажите каким макаром ее подключить?  ???


Название: Re: QtCreator + OpenCV
Отправлено: Bepec от Август 28, 2017, 16:53
Как и все либы. Указать путь к исходникам, подключить их хедеры, подключить либы.
Подключение хедеров даст функции, подключение либ даст реализацию. И вуаля.


Название: Re: QtCreator + OpenCV
Отправлено: demaker от Август 28, 2017, 17:08
Как и все либы. Указать путь к исходникам, подключить их хедеры, подключить либы.
Подключение хедеров даст функции, подключение либ даст реализацию. И вуаля.
Т.е указать путь к исходникам?
Либы я и так подключил там она одна  opencv_world330.
Код:
INCLUDEPATH+="C:/.../opencv/build/include"
LIBS+="C:/.../opencv/build/x64/vc14/lib/opencv_world330.lib"
Может мне надо собрать библиотеку?
Но про-файла нет.
Или как его сделать,  чтобы собрать?


Название: Re: QtCreator + OpenCV
Отправлено: Bepec от Август 28, 2017, 17:50
Ашники подключи. типа opencv.h. тогда сразу функции вылезут.


Название: Re: QtCreator + OpenCV
Отправлено: demaker от Август 28, 2017, 17:59
Ашники подключи. типа opencv.h. тогда сразу функции вылезут.

Да прописал инклюды целую кучу *.hpp и *.h
Но ошибки остаются типа
Код:
undefined reference to'cvLoadImage'

Что делаю нитак не знаю?


Название: Re: QtCreator + OpenCV
Отправлено: Bepec от Август 28, 2017, 18:01
В душе не чаю, я не экстрасенс, что ты там наподключал целую кучу и какой код пытаешься компилить.

PS не надо так!!!


Название: Re: QtCreator + OpenCV
Отправлено: Bepec от Август 28, 2017, 18:09
update:
По быстрому скачал с соурсфорджа - там нет lib для x86 венды. Потому вам придётся собирать, если у вас x32 компилятор.


Название: Re: QtCreator + OpenCV
Отправлено: demaker от Август 28, 2017, 19:30
update:
По быстрому скачал с соурсфорджа - там нет lib для x86 венды. Потому вам придётся собирать, если у вас x32 компилятор.
Скачал CMake 3.2.1-win32-x86
Сгенерил Makefile
Запустил migw32-make
На 28% выдал ошибку
Код:
C:\...\windres.exe:unknown option -- W
.
.
.


Название: Re: QtCreator + OpenCV
Отправлено: Bepec от Август 29, 2017, 02:02
Вон в гугле пишут, там нужна "своя" версия mingw для сборки. Погуглите, вроде темы отмечены как решённые.


Название: Re: QtCreator + OpenCV
Отправлено: demaker от Август 29, 2017, 06:38
Вон в гугле пишут, там нужна "своя" версия mingw для сборки. Погуглите, вроде темы отмечены как решённые.
Интересно, что значит своя?
Какой в креаторе был mingw такой и использовал.


Название: Re: QtCreator + OpenCV
Отправлено: Bepec от Август 29, 2017, 11:40
Это значит, что с другими версиями mingw библиотека не собирается. Совсем. Это же линуксоиды. :)


Название: Re: QtCreator + OpenCV
Отправлено: demaker от Август 29, 2017, 15:29
Сделал.
Собрал.
Еще пришлось чуть - чуть подправить вот тут
Код:
I also had this issue when I compiled OpenCV3.3 source code for Qt. Then I found the hint here(https://wiki.qt.io/How_to_setup_Qt_and_openCV_on_Windows).

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ If you have the following error : ... windres.exe: unknown option -- W ...

try this : in cmake uncheck ENABLE_PRECOMPILED_HEADERS

If, in the file opencv/sources/modules/videoio/src/cap_dshow.cpp, you have the following error : 'sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA' was not declared in this scope ...

try this :put the following line: #define NO_DSHOW_STRSAFE, before the line : #include "DShow.h"

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

в про-файле прописал либы
Код:
NCLUDEPATH += "C:\Qt\Qt5.7.0\opencv\build\include"
LIBS += "C:/Qt/Qt5.7.0/opencv/build/lib/libopencv_calib3d330.dll.a"
LIBS += "C:/Qt/Qt5.7.0/opencv/build/lib/libopencv_core330.dll.a"
LIBS += "C:/Qt/Qt5.7.0/opencv/build/lib/libopencv_dnn330.dll.a"
LIBS += "C:/Qt/Qt5.7.0/opencv/build/lib/libopencv_features2d330.dll.a"
LIBS += "C:/Qt/Qt5.7.0/opencv/build/lib/libopencv_imgcodecs330.dll.a"
LIBS += "C:/Qt/Qt5.7.0/opencv/build/lib/libopencv_imgproc330.dll.a"
LIBS += "C:/Qt/Qt5.7.0/opencv/build/lib/libopencv_ml330.dll.a"
LIBS += "C:/Qt/Qt5.7.0/opencv/build/lib/libopencv_objdetect330.dll.a"
LIBS += "C:/Qt/Qt5.7.0/opencv/build/lib/libopencv_shape330.dll.a"
LIBS += "C:/Qt/Qt5.7.0/opencv/build/lib/libopencv_stitching330.dll.a"
LIBS += "C:/Qt/Qt5.7.0/opencv/build/lib/libopencv_superres330.dll.a"
LIBS += "C:/Qt/Qt5.7.0/opencv/build/lib/libopencv_video330.dll.a"
LIBS += "C:/Qt/Qt5.7.0/opencv/build/lib/libopencv_videoio330.dll.a"
LIBS += "C:/Qt/Qt5.7.0/opencv/build/lib/libopencv_videostab330.dll.a"
LIBS += "C:/Qt/Qt5.7.0/opencv/build/lib/libopencv_photo330.dll.a"
LIBS += "C:/Qt/Qt5.7.0/opencv/build/lib/libopencv_highgui330.dll.a"

Компилится норм.
Но почемуто при запуске программа падает при использовании opencv функций ???

Код
C++ (Qt)
#include <opencv/cv.h>
#include <opencv/cvwimage.h>
#include <opencv2/imgcodecs.hpp>
#include <opencv/highgui.h>
#include <opencv2/highgui.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv_modules.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/imgproc.hpp>
 
MainWindow::MainWindow(QWidget *parent) :
   QMainWindow(parent),
   ui(new Ui::MainWindow)
{
   ui->setupUi(this);
 
   IplImage *img = cvLoadImage("D:\picture.jpg");
   cvNamedWindow("Hello, Qt! From OpenCv");
   cvShowImage("Hello, Qt! From OpenCV!",img);
   cvWaitKey();
 
}
 
MainWindow::~MainWindow()
{
   delete ui;
}
 


Название: Re: QtCreator + OpenCV
Отправлено: demaker от Август 30, 2017, 23:39
Сделал.
Перемобрал.
 И добавил к папке где лежит exe-файл библиотеки dll.
Можно было их в принципе прописать путь к ним в PATH.