Как установить OpenCV на Qt под Windows

OpenCV, Qt

Введение
Хотел бы выразить благодарность Евгению за этот замечательный сайт и за то что он помогает начинающим программистом и не только развиваться. Хотел бы попросить и других пользователей внести свой вклад в развития данного проекта) Спасибо всем)
Ниже описанные действие были сделаны мной когда я устанавливал для себя OpenCV . Хотелось бы подчеркнуть что в интернете нет ПОЛНОЙ статьи на эту тему. Так как когда я это устанавливал выходили ошибки а ответы приходилось искать то в рунете то у американцев то черти знает у кого.



Лан. Поехали)

Для установки OpenCV на Qt под OS Windows нам нужно.

0. Скачать OpenCV с официального сайта. Достаем из архива файлы.
https://opencv.org/

1. Скачать CMake с официального сайта. Достаем из архива файлы.
https://cmake.org/


2. Сам Qt ( на данный момент у меня стоит 5.10.1 v)
3. На Диске C:\ или на диске D:\ создает папку OpenCV
3.0 В этой папке(OpenCV) скидываем папку, которую мы достали из архива OpenCV.zip.
3.1 В этой же папке (OpenCV) создаем папке OpneCV_bin
4. Запускаем СMake

ВНИМАНИЕ!!!
Обратите внимание на ссылку
C:/OpenCV/opencv/sources(Это в папке которую мы разархивировали после того как скачали в ней есть эта папка SOURCES!)
C:/OpenCV/opencv_bin(А это пустая ! папка которую мы создали)

5. ВАЖНО!!!
В этом списке снимите флажок ENABLE_PRECOMPILED_HEADERS, WHIT_IPP, WHIT_CUDA, WHIT_TBB.
В этом списке постьвте  флажок WHIT_QT, WHIT_OPENGL  поменять на Release
6. Нажимаем на Configuer там будет проходить процесс установки и он остановится. Некоторые поля будут красными их нужно поменять в ручную.

Установите QT_MAKE_EXECUTABLE в D: \ Qt \ 5.9 \ mingw53_32 \ bin \ qmake.exe
 Установите Qt5Concurrent_DIR в D: \ Qt \ 5.9 \ mingw53_32 \ lib \ cmake \ Qt5Concurrent
 Установите Qt5Core_DIR в D: \ Qt \ 5.9 \ mingw53_32 \ lib \ cmake \ Qt5Core
 Установите Qt5Gui_DIR в D: \ Qt \ 5.9 \ mingw53_32 \ lib \ cmake \ Qt5Gui
 Установите Qt5Test_DIR в D: \ Qt \ 5.9 \ mingw53_32 \ lib \ cmake \ Qt5Test
 Установите Qt5Widgets_DIR в D: \ Qt \ 5.9 \ mingw53_32 \ lib \ cmake \ Qt5Widgets
 Установите Qt5OpenGL_DIR в D: \ Qt \ 5.9 \ mingw53_32 \ lib \ cmake \ Qt5OpenGL
 Установите CMAKE_BUILD_TYPE для Release или RelWithDebInfo

потом занова нажимает на Конфиг а после окончания на Генерацию( Generate). И все, завкрываем СMake.
7. Открываем командную строку и заходим в папку C:\OpenCV\opencv_bin (Это в моем случае) и в командной строке набираем

 cd с: \OpenCV\opencv_bin  
 mingw32-make -j 8
 mingw32-make install

Дорогие друзья Установить OpenCV на Qt под MacOS можно тоже также....но там нужно использовать команду sudo make
8. Потом добавляем PATH

Заходим в свойства МОЙ КОМПЬЮТЕР

Все. Мы установили все)) Теперь нужно открыть проект в Qt и добавить в проект следующие ссылки

Пример кода внизу

# ------------------------------------------------- 
# 
# Проект, созданный QtCreator 2017-03-05T12: 30: 06 
# 
# --------------------------------- ----------------

QT        + =  core  gui

moreThan ( QT_MAJOR_VERSION ,  4 ) :  QT  + =  виджеты

TARGET  =  opencvtest 
TEMPLATE  =  приложение

# Следующий параметр определяет, что ваш компилятор генерирует предупреждения, если вы используете 
# любую функцию Qt, которая помечается как устаревшая (точные предупреждения 
# зависят от вашего компилятора). Пожалуйста, ознакомьтесь с документацией 
# устаревшего API, чтобы узнать, как отменить его код. 
ОПРЕДЕЛЕНИЯ  + =  QT_DEPRECATED_WARNINGS

# Вы также можете сделать код не скомпилированным, если вы используете устаревшие API. 
# Чтобы сделать это, раскомментируйте следующую строку. 
# Вы также можете отключить устаревшие API только до определенной версии Qt. 
#DEFINES + = QT_DISABLE_DEPRECATED_BEFORE = 0x060000 # отключает все API, устаревшие до Qt 6.0.0


ИСТОЧНИКИ  + =  основной . cpp \
         mainwindow . CPP

HEADERS   + =  mainwindow . час

FORMS     + =  mainwindow . щ

INCLUDEPATH  + =  D : \ opencv \ build \ include

LIBS  + =  D : \ opencv - build \ bin \ libopencv_core320 . dll 
LIBS  + =  D : \ opencv - build \ bin \ libopencv_highgui320 . dll 
LIBS  \ libopencv_imgproc320 . dll LIBS + = D : \ opencv - + =  D : \ opencv - build \ bin \ libopencv_imgcodecs320 . dll 
LIBS  + =  D : \ opencv - build \ bin
   build \ bin \ libopencv_features2d320 . dll 
LIBS  + =  D : \ opencv - build \ bin \ libopencv_calib3d320 . длл

# более правильный вариант, как set includepath и libs для mingw 
# добавить системную переменную: OPENCV_SDK_DIR = D: / opencv / build 
# читать http: //doc.qt.io/qt-5/qmake-variable-reference.html#libs

#INCLUDEPATH + = $$ (OPENCV_SDK_DIR) / включить

#LIBS + = -L $$ (OPENCV_SDK_DIR) / x86 / mingw / lib \
# -lopencv_core320 \ 
# -lopencv_highgui320 \ 
# -lopencv_imgcodecs320 \ 
# -lopencv_imgproc320 \ 
# -lopencv_features2d320 \ 
# -lopencv_calib3d320
и измените mainwindow.cpp следующим образом:

#include  "mainwindow.h"
#include  "ui_mainwindow.h"

#include  <opencv2 / core / core.hpp>
#include  <opencv2 / highgui / highgui.hpp>

MainWindow :: MainWindow ( родитель QWidget  * ) : QMainWindow ( родительский ), ui 
    
     ( новый  Ui :: MainWindow ) 
{ 
    ui -> setupUi ( this );

    // читаем изображение 
    cv :: Mat  image  =  cv :: imread ( "f: //1.jpg" ,  1 ); 
    // создаем окно изображения с именем «My Image» 
    cv :: namedWindow ( «My Image» ); 
    // показать изображение в окне 
    cv :: imshow ( «Мое изображение» ,  изображение ); 
}

MainWindow :: ~ MainWindow () 
{ 
    delete  ui ; 
}

Источник Qt wiki

Но там не все...я проходил эти тропы

We recommend hosting TIMEWEB
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.
W
  • #
  • July 25, 2018, 2:40 p.m.

Код снизу чет слетел....не знаю как подправить ....простите ребята(

Спасибо за статью. Я поправил все моменты с вёрсткой.

T

Спасибо за статью! У меня возникли проблемы с CMake'ом он постоянно выдавал ошибки, нашел ролик на ютубе где пошагово показано как устанавливать эту либу. Ссылку прилагаю, надеюсь это разрешено.. (https://www.youtube.com/watch?v=7zYJFjqPklI)

Не приветствуется спам, подозрительные ссылки, сомнительные предложения и некультурное поведение ))))

В остальном всё модерируется, конечно, но без тирании.

Если есть действительно полезные материалы или статьи на других ресурсах, то для этого даже имеется раздел социальных закладок , можете добавлять там ссылки, просто пишите небольшую аннотацию о том, что находится по той ссылке. Но, конечно, все материалы проходят пост-модерацию во избежание злоупотреблений.

v

Ребята а что если папки "Source" в архиве opencv нет? Скачал три варианта библиотеки ни в одном нет этой папки.

v

Разобрался!!! Надо было не архив качать а exe файл и его уже распаковывать в нужную папку)))

Добавлю от себя: на Windows 10 x64 с MinGW 7.3.0 в CMake надо установить флаг OPENCV_ENABLE_ALLOCATOR_STATS=OFF, тогда всё скомпилится нормально.

Comments

Only authorized users can post comments.
Please, Log in or Sign up
How to become an author?

Contribute to the evolution of the EVILEG community.

Learn how to become a site author.

Learn it
Donate

Good day, Dear Users!!!

I am Evgenii Legotckoi, developer of EVILEG. And it is my hobby project, which helps to learn programming another programmers and developers

If the site helped you, and you want also support the development of the site, than you can donate by following ways

PayPalYandex.Money
Timeweb

Let me recommend you the excellent hosting on which EVILEG is located.

For many years, Timeweb has been proving his stability.

For projects on Django I recommend VDS hosting

View Hosting Timeweb
June 6, 2020, 12:20 a.m.
Aleksej

C ++ - Test 004. Pointers, Arrays and Loops

  • Result:60points,
  • Rating points-1
June 6, 2020, 12:15 a.m.
Aleksej

C++ - Test 001. The first program and data types

  • Result:53points,
  • Rating points-4
V
June 5, 2020, 5:47 p.m.
Vladzo

C++ - Test 005. Structures and Classes

  • Result:83points,
  • Rating points4
Last comments
June 5, 2020, 11:52 a.m.
progammist

Распознавание изображений на Python с помощью TensorFlow и Keras

Огромное спасибо за метериал, по-больше бы подобных статей (с подробным описанием работы и примерами применения) на тему современных технологий. Вопрос поразмышлять. На текущий момент реал…
June 5, 2020, 2:39 a.m.
Evgenij Legotskoj

Qt/C++ - Tutorial 091. How to write a custom delegate controlling the highlighting of a row in a table

По-моему, смысла в этом нет особого. Если делегат будет игнорировать настройки таблицы, то это приведёт ещё к большему непониманию, что вообще происходит, для программиста, который после вас буд…
June 5, 2020, 2:34 a.m.
IscanderChe

Qt/C++ - Tutorial 091. How to write a custom delegate controlling the highlighting of a row in a table

Сижу, размышляю: можно ли переписать делегата так, чтобы независимо от настроек строк выделялись строки?
June 5, 2020, 2:31 a.m.
Evgenij Legotskoj

Qt/C++ - Tutorial 091. How to write a custom delegate controlling the highlighting of a row in a table

Понятно. Я не обратил внимания на то, что там было в старом коде по настройкам строк :)
Now discuss on the forum
s
June 6, 2020, 2:54 a.m.
shuric

Qt/C++ Определение положения курсора над действие(кнопкой) в QToolBar

Доброго дня. Возник вопрос - как можно определить что курсор находится над определенным действием(кнопкой) в qtoolbar ? mainwindow.cpp MainWindow::MainWi…
s
June 6, 2020, 1:45 a.m.
shuric

Qt/C++ особенности QProxyStyle

Да, Вы правы. Код был скопирован с сайта (уже не помню с какого), но решил пойти по пути более легком. Пришлось переписать - кому интересно: использовал stackedWidget для пе…
June 6, 2020, 12:08 a.m.
Aleksej

Посоветуйте новичку (базы данных и Qt, что учить)

Блин, а я недавно купил Шлее Qt 5.10 :( С детства хотел стать программистом, баловался Паскалем, писал простенькие программки на Delphi, создавал движок на php, изучал C (забросил и перешел на п…
June 5, 2020, 2:09 p.m.
IscanderChe

QPlainTextEdit настройка цвета фона

Вечер добрый. Пытаюсь настроить цвет фона QPlainTextEdit следующим образом: CodeEditor::CodeEditor(QWidget *parent) : QPlainTextEdit(parent){ ... QPalette::ColorRole role = bac…
June 5, 2020, 7:13 a.m.
IscanderChe

Фильтр для QtableView sql

Добрый день. Для такой фильтрации необходимо использовать QSortFilterProxyModel. В оффдоках есть хороший пример.
About
Services
© EVILEG 2015-2020
Recommend hosting TIMEWEB