Как установить OpenCV 2.4 и скомпилировать мой код с помощью MinGW?
Начало работы с OpenCV 2.4 и MinGW в Windows 7
Ответ 1
1. Установка OpenCV 2.4.3
Сначала, OpenCV 2.4.3 от sourceforge.net. Его самостоятельный файл-извлечение, поэтому просто дважды щелкните файл, чтобы начать установку. Установите его в каталог, скажем C:\
.
Подождите, пока все файлы не будут извлечены. Это создаст новый
каталог C:\opencv
, который содержит файлы заголовков OpenCV, библиотеки, образцы кода и т.д.
Теперь вам нужно добавить каталог C:\opencv\build\x86\mingw\bin
в свою систему PATH. Этот каталог содержит DLL OpenCV, который необходим для запуска вашего кода.
Откройте Панель управления → Система → Расширенные настройки системы → Расширенная вкладка → Переменные среды...
Вы увидите окно, как показано ниже:
В разделе "Системные переменные",
выберите Путь (1), нажмите Изменить... (2), добавьте C:\opencv\build\x86\mingw\bin
(3), затем нажмите Хорошо.
Это завершит установку OpenCV 2.4.3 на вашем компьютере.
2. Установка пакета компилятора MinGW
Я настоятельно рекомендую вам использовать gcc (сборник компиляторов GNU) для компиляции вашего кода. gcc - это набор компиляторов, широко доступный в системах Linux, а MinGW - это родной порт для Windows.
Загрузите установщик MinGW из Sourceforge.net и дважды щелкните, чтобы начать установку. Просто следуйте указаниям мастера и выберите каталог, который будет установлен, скажем C:\MinGW
.
Выберите "Компилятор C" и "Компилятор С++" для установки.
Установщик загрузит некоторые пакеты из Интернета, поэтому вам нужно подождать некоторое время. По завершении установки добавьте C:\MinGW\bin
к вашему системному пути, используя шаги, описанные ранее.
Чтобы проверить успешность установки MinGW, откройте окно командной строки и введите: gcc
. Если все в порядке, оно отобразит это сообщение:
gcc: fatal error: no input files
compilation terminated
Это завершает установку MinGW, теперь самое время написать "Hello, World!". Программа.
3. Напишите пример кода
Откройте текстовый редактор и введите код ниже и сохраните файл loadimg.cpp
.
#include "opencv2/highgui/highgui.hpp"
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
Mat im = imread(argc == 2 ? argv[1] : "lena.jpg", 1);
if (im.empty())
{
cout << "Cannot open image!" << endl;
return -1;
}
imshow("image", im);
waitKey(0);
return 0;
}
Поместите lena.jpg
или любое изображение, которое вам нравится в том же каталоге, с файлом выше. Откройте окно командной строки и скомпилируйте код, набрав:
g++ -I"C:\opencv\build\include" -L"C:\opencv\build\x86\mingw\lib" loadimg.cpp -lopencv_core243 -lopencv_highgui243 -o loadimg
Если он компилируется успешно, он создаст исполняемый файл с именем loadimg.exe
.
Тип:
loadimg
Для выполнения программы. Результат:
4. Куда пойти отсюда?
Теперь, когда ваша среда OpenCV готова, что дальше?
- Перейдите к образцам dir →
C:\opencv\samples\cpp
. - Прочитайте и скомпилируйте код.
- Напишите свой собственный код.
Ответ 2
Инструкции в ответе @bsdnoobz действительно полезны, но не заставили OpenCV работать в моей системе.
По-видимому, мне нужно было самому скомпилировать библиотеку, чтобы заставить ее работать, и не рассчитывать на предварительно созданные двоичные файлы (что вызвало сбой моих программ, возможно, из-за несовместимости с моей системой).
Я получил его на работу и написал подробное руководство для компиляция и установка OpenCV и настройка Netbeans для работы с ним.
Для полноты он также представлен ниже.
Когда я впервые начал использовать OpenCV, я столкнулся с двумя основными трудностями:
- Как немедленно отключить мои программы.
- Создание Netbeans играет хорошо, и особенно получение отладчика времени для работы.
Я прочитал много учебников и "практических" статей, но ни один из них не был действительно исчерпывающим и тщательно. В конце концов мне удалось создать среду; и после в то время как используя эту (большую) библиотеку, я решил написать этот небольшой учебник, которые, надеюсь, помогут другим.
В этом уроке представлены три части:
- Компиляция и установка OpenCV.
- Настройка NetBeans.
- Пример программы.
Используемая среда: Windows 7, OpenCV 2.4.0, Netbeans 7 и MinGW 3.20 (с компилятором gcc 4.6.2).
Предположения: У вас уже есть MinGW и Netbeans, установленные в вашей системе.
Компиляция и установка OpenCV
При загрузке OpenCV архив на самом деле уже содержит предварительно построенные (скомпилированные библиотеки и библиотеки DLL) в папке "build". Сначала я пытались использовать эти двоичные файлы, считая, что кто-то уже выполнил работу компиляция для меня. Это не сработало.
В конце концов я решил, что мне нужно собрать всю библиотеку в моей собственной системе в чтобы он работал правильно.
К счастью, процесс компиляции довольно прост благодаря CMake. CMake (означает Cross-Platform Make) - это инструмент, который генерирует специальные файлы к вашему компилятору и платформе. Мы будем использовать CMake для того, чтобы создания и компиляции, создания "makefile", а затем скомпилировать библиотека.
Шаги:
- Загрузите CMake и установите его (в мастере установки выберите добавить CMake в систему PATH).
- Загрузите версию OpenCV.
- Извлеките архив в каталог по вашему выбору. Я буду использовать
c:/opencv/
. - Запустите графический интерфейс CMake.
- Найдите исходный каталог
c:/opencv/
. - Выберите, где создать двоичные файлы. Я выбрал
c:/opencv/release
. - Нажмите "Настроить". На открывшемся экране выберите генератор
в соответствии с вашим компилятором. В нашем случае это "MinGW Makefiles".
- Подождите, пока все загрузится, после чего вы увидите этот экран:
- Измените настройки, если хотите, или оставьте значения по умолчанию. Когда ты
нажмите "Настроить" еще раз. Вы должны увидеть "Конфигурация сделана" в
окно журнала, а красный фон должен исчезнуть из всех
клетки.
- В этот момент CMake готов сгенерировать make файл, с которым мы будем скомпилируйте OpenCV с нашим компилятором. Нажмите "Создать" и дождитесь makefile. Когда процесс завершен, вы должны увидеть "Создание сделано". С этого момента нам больше не понадобится CMake.
- Найдите исходный каталог
- Откройте оболочку MinGW (следующие шаги также можно выполнить из команды Windows
незамедлительный).
- Введите каталог
c:/opencv/release/
. - Введите
mingw32-make
и нажмите enter. Это должно начать компиляцию процесс. - Когда компиляция выполнена, бинарные файлы OpenCV готовы к использованию.
- Для удобства мы должны добавить каталог
C:/opencv/release/bin
к системе PATH. Это гарантирует, что наши программы смогут найти Необходимая DLL для запуска.
- Введите каталог
Настройка Netbeans
Netbeans следует указать, где найти файлы заголовков и скомпилированные библиотеки (которые были созданы в предыдущем разделе).
Файлы заголовков необходимы по двум причинам: для компиляции и для кода завершение. Скомпилированные библиотеки необходимы для этапа компоновки.
Примечание. Чтобы отладка работала, должна быть доступна DLL OpenCV, поэтому мы добавили каталог, который содержит их в систему PATH (предыдущий раздел, шаг 5.4).
Во-первых, вы должны убедиться, что Netbeans настроен правильно для работы с
MinGW. Посмотрите снимок экрана ниже и убедитесь, что ваши настройки верны
(учитывая изменения путей в соответствии с вашей собственной установкой). Также обратите внимание
что команда make
должна быть от msys и не от Cygwin.
Далее, для каждого нового проекта, который вы создаете в Netbeans, вы должны определить include path (каталог, который содержит файлы заголовков), библиотеки путь и конкретные библиотеки, которые вы собираетесь использовать. Щелкните правой кнопкой мыши проект имя в области "проекты" и выберите "свойства". Добавить путь включения (измените путь в соответствии с вашей собственной установкой):
Добавить путь к библиотекам:
Добавьте конкретные библиотеки, которые вы собираетесь использовать. Эти библиотеки будут
динамически связанные с вашей программой на этапе компоновки. Обычно вам понадобится
библиотеки core
и любых других библиотек в соответствии с конкретными потребностями
вашей программы.
Чтобы это, вы теперь готовы использовать OpenCV!
Резюме
Ниже приведены общие шаги, которые необходимо выполнить для установки OpenCV и используйте его с Netbeans:
- Скомпилируйте OpenCV с вашим компилятором.
- Добавьте каталог, содержащий DLL, в вашу систему PATH (в нашем случае: с.:/OpenCV/выпуск/BIN)
- Добавить каталог, содержащий файлы заголовков в ваш проект, включает: путь (в нашем случае: c:/opencv/build/include).
- Добавьте каталог, содержащий скомпилированные библиотеки, к проекту путь библиотек (в нашем случае: c:/opencv/release/lib).
- Добавьте конкретные библиотеки, которые необходимо связать с вашим проектом (для пример: libopencv_core240.dll.a).
Пример - "Hello World" с OpenCV
Вот небольшая примерная программа, которая рисует текст "Hello World:)" в графическом интерфейсе окно. Вы можете использовать его, чтобы убедиться, что ваша установка работает правильно. После компилируя и запуская программу, вы должны увидеть следующее окно:
#include "opencv2/opencv.hpp"
#include "opencv2/highgui/highgui.hpp"
using namespace cv;
int main(int argc, char** argv) {
//create a gui window:
namedWindow("Output",1);
//initialize a 120X350 matrix of black pixels:
Mat output = Mat::zeros( 120, 350, CV_8UC3 );
//write text on the matrix:
putText(output,
"Hello World :)",
cvPoint(15,70),
FONT_HERSHEY_PLAIN,
3,
cvScalar(0,255,0),
4);
//display the image:
imshow("Output", output);
//wait for the user to press any key:
waitKey(0);
return 0;
}
#include "opencv2/opencv.hpp"
#include "opencv2/highgui/highgui.hpp"
using namespace cv;
int main(int argc, char** argv) {
//create a gui window:
namedWindow("Output",1);
//initialize a 120X350 matrix of black pixels:
Mat output = Mat::zeros( 120, 350, CV_8UC3 );
//write text on the matrix:
putText(output,
"Hello World :)",
cvPoint(15,70),
FONT_HERSHEY_PLAIN,
3,
cvScalar(0,255,0),
4);
//display the image:
imshow("Output", output);
//wait for the user to press any key:
waitKey(0);
return 0;
}
Ответ 3
Это не работает для меня. Я провел несколько дней после каждого учебника, которое я нашел в сети, и, наконец, я составил свои собственные двоичные файлы. Здесь описывается следующее: OpenVC 2.4.5, eclipse CDT Juno, ошибка MinGW 0xc0000005
После многих испытаний и ошибок я решил следовать этот учебник и скомпилировать мои собственные двоичные файлы, поскольку кажется, что слишком много людей жалуются, что предварительно скомпилированные двоичные файлы НЕ работают для них. Eclipse CDT Juno уже установлен.
Моя процедура была следующей:
- Загрузите и установите MinGW и добавьте в систему PATH с C:/MinGW/бен
- Загрузите cmake из http://www.cmake.org и установите его
- Загрузить OpenCV2.4.5 Версия для Windows
- Установить/распаковать Opencv на C:\OpenCV245PC\(README, index.rst и CMakeLists.txt есть со всеми подпапками)
- Запустите инструмент CMake GUI, затем
- Выберите C:\OpenCV245PC\в качестве источника
- Выберите пункт назначения, C:\OpenCV245MinGW\x86, где нужно создать двоичные файлы.
- Нажмите кнопку "Настроить", в качестве генератора выберите MinGW Makefiles. В окне есть красные блики, выберите нужные параметры.
- Нажмите кнопку Configure снова. Теперь выполняется настройка.
- Нажмите кнопку "Создать".
- Выход из программы при выполнении создания.
- Выйдите из программы Cmake.
- Запустите режим командной строки (cmd.exe) и перейдите к пункту назначения каталог C:\OpenCV245MinGW\x86
- Введите "mingw32-make". Вы увидите прогресс в строительстве двоичные файлы. Если команда не найдена, вы должны убедиться, что система PATH добавляется c:/mingw/bin. Сборка продолжается в соответствии с выбранными вариантами завершения.
- В системе Windows PATH (Мой компьютер) Щелкните правой кнопкой мыши > Свойствa > Дополнительно > Переменные среды > Путь) добавьте каталог места назначения, C:\OpenCV245MinGW\x86\bin
- RESTART COMPUTER
- Перейдите в Eclipse CDT IDE, создайте программу на С++, используя образец кода OpenCV (вы можете использовать код сверху этого раздела).
- Перейдите в Project > Properties > C/С++ Build > Settings > GCC С++ Compiler > Включает и добавляет исходная папка OpenCV "C:\OpenCV245PC\build\include"
- Перейдите в Project > Properties > C/С++ Build > Settings > MinGW С++ Linker > Библиотеки и добавьте в Библиотеки (-l) ONE BY ONE (это может варьироваться от проекта к проекту, вы можете добавить их все, если вам нравится или некоторые из них только те, которые вам нужны для вашего проекта): opencv_calib3d245 opencv_contrib245 opencv_core245 opencv_features2d245 opencv_flann245 opencv_gpu245 opencv_highgui245 opencv_imgproc245 opencv_legacy245 opencv_ml245 opencv_nonfree245 opencv_objdetect245 opencv_photo245 opencv_stitching245 opencv_video245 opencv_videostab245
- Добавьте встроенную папку библиотеки OpenCV, "C:\OpenCV245MinGW\x86\lib" в путь поиска библиотеки (-L).
Вы можете использовать этот код для проверки своей установки:
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main()
{
Mat img = imread("c:/lenna.png", CV_LOAD_IMAGE_COLOR);
namedWindow("MyWindow", CV_WINDOW_AUTOSIZE);
imshow("MyWindow", img);
waitKey(0);
return 0;
}
Не забудьте поставить изображение на C:/(или где бы вы ни находились, просто убедитесь, что затмение имеет доступ к чтению.
Ответ 4
Если вы установили opencv 2.4.2, вам нужно изменить -lopencv_core240
на -lopencv_core242
Я сделал ту же ошибку.
Ответ 5
В Windows 64bits он работает:
- Загрузите opencv-3.0 (beta), MinGW (инструмент командной строки);
- Добавьте выше соответствующую папку bin в PATH var;
- Создайте папку "release" (может быть любое имя) в;
- В созданную папку, откройте приглашение терминала и выполните следующие команды:
-
Скопировать и пропустить эту команду
cmake -G "MinGW Makefiles" -D CMAKE_CXX_COMPILER=mingw32-g++.exe -D WITH_IPP=OFF MAKE_MAKE_PROGRAM=mingw32-make.exe ..\
-
Выполните эту команду
mingw32-make
-
Выполните эту команду
mingw32-make install
DONE
Ответ 6
Я использовал инструкции в этом шаге, и он сработал.
http://nenadbulatovic.blogspot.co.il/2013/07/configuring-opencv-245-eclipse-cdt-juno.html
Ответ 7
Как отметил @Nenad Bulatovic, нужно быть осторожным при добавлении библиотек (19-й шаг). нельзя добавлять любые конечные пробелы, добавляя каждую библиотеку по строкам. в противном случае mingw идет haywire.