How-to по компиляции.

Проверено с OpenCV 4.1.0 и Qt 5.10 (только пути на свои замените).

Для начала, нам понадобиться:

  • OpenCV
  • CMake (Должен быть 32х битным, да же если система 64!)

Для удобства, основной путь у меня такой: E:\Projects\OpenCV  и в дальнейшем я отталкиваюсь именно от этой папки (В неё же и ставите OpenCV после скачивания).

Открываем консольку.

Должно скомпилироваться без проблем.

cd E:\Projects\OpenCV\opencv\build
set PATH=D:\Qt\5.10\mingw53_32\bin\;%PATH%
set PATH=D:\Qt\Tools\mingw530_32\bin\;%PATH%
cmake ../sources -G "MinGW Makefiles"  -DWITH_QT=ON -DWITH_QT_OPENGL=ON -DBUILD_EXAMLES=ON -DQT_QTCORE_LIBRARY_DEBUG="Qt5Cored.dll" -DQT_QTCORE_LIBRARY_RELEASE="Qt5Core.dll" -DQT_QMAKE_EXECUTABLE="qmake.exe" -DCMAKE_BUILD_TYPE=Release
mingw32-make -j4
mingw32-make install
Если нужны ещё и nonfree модули (например для SURF), то:
«git clone https://github.com/opencv/opencv_contrib ../opencv_contrib»
и к cmake добавить параметр: «-DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules» и «-DOPENCV_ENABLE_NONFREE:BOOL=ON»
Если какой-то из модулей начнёт ебать мозг, то его можно отключить дополнительным параметром к cmake: «-DBUILD_opencv_modulename=OFF»
Мне пришлось отключить:
-DWITH_OPENCL_D3D11_NV=OFF
Так как мне он не нужен вовсе и были какие-то проблемы (заголовочников не было, скорее всего).
j4 — количество ядер в проце, чтобы быстрее компилилось.
После изменения параметров cmake необходимо из директории удалить файл CMakeCache.txt
MinGW необходимо использовать тот, который или идёт с Qt или тем, которым эти исходники уже компилировали!
Соответственно нужно заменить все пути на свои. И в выводе CMake убедитесь, что используется от Qt.
UPDT: OpenCV 3.0
Если во время сборки mingw32-make ругнётся на отсутствие -lRunTmChk  то cmake нужно перезапустить с флагом «-DWITH_IPP=OFF»
Если будет ругаться » error: base class ‘s
truct IUnknown’ has accessible non-virtual destructor [-Werror=non-virtual-dtor]»
то идём в папку с opencv d:\projects\opencv\sources\cmake\ открываем OpenCVCompilerOptions.cmake
ищем строку add_extra_compiler_option(-Werror=non-virtual-dtor) и ставим перед ней «#»
перезапускаем cmake.
Если будет ругаться «windres.exe: unknown option —W» то выполните заново cmake с дополнительным параметром «-DENABLE_PRECOMPILED_HEADERS=OFF»
Если будут проблемы на шаге videoio, например «sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA» и похожие, то в файле «\sources\modules\videoio\src\cap_dshow.hpp» добавьте в самом начале «#define NO_DSHOW_STRSAFE«

На этом установка закончена =)

Теперь попробуем тестовый проектик сделать.

Создаём новый консольный проект.

В  .pro файл дописываем:

INCLUDEPATH += E:/Projects/OpenCV/opencv/build/install/include/
LIBS +=-L"E:/Projects/OpenCV/opencv/build/install/x86/mingw/lib/"
LIBS +=  \
-lopencv_core410 \
-lopencv_highgui410 \
-lopencv_imgproc410 \
-lopencv_photo410 \
-lopencv_imgcodecs410

В main.cpp пишем:

#include <iostream>;
#include <opencv2/opencv.hpp>;
#include <opencv2/highgui.hpp>
using namespace std;
using namespace cv;
int main() {
   namedWindow("My Image");
   Mat image = imread("K:/Projects/OpenCV HelloWorld/img.jpg");

   imshow("My Image", image);
   waitKey(5000);

    return 0;
}
Чуть не забыл, в системную переменную PATH добавьте путь: «E:/Projects/OpenCV/opencv/build/install/x86/mingw/bin»,
E:/Projects/OpenCV/opencv/build/install/x86/mingw/bin;%path%»
иначе проект не соберётся и ребутнуть комп, или в Qt в настройках проекта — переменных окружения добавить.
Если переходите с предыдущей версии OpenCV, то в 4.0 много изменений (ну, к примеру, наименование констант CV_BGR2GRAY теперь COLOR_BGR2GRAY), в общем документация тут: https://docs.opencv.org/

Надеюсь, всё прошло удачно =) На этом, пока что, всё.