OpenVC 2.4.5, затмение CDT Juno, ошибка MinGW 0xc0000005
На 64-битной Windows 7, процессоре AMD, я установил OpenVC 2.4.5 с eclipse CDT Juno и MinGW, все до последнего обновления. Ранее eclipse CDT и MinGW скомпилировали более 100 исходных файлов без проблем. Они даже компилируют этот маленький исходный файл OpenCV,
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
int main()
{
IplImage* img1 = cvLoadImage("lenna.png");
cvShowImage("MyWindow1", img1);
cv::Mat img2;
img2 = cv::imread("lenna.png", CV_LOAD_IMAGE_COLOR);
cv::namedWindow("MyWindow2", CV_WINDOW_AUTOSIZE);
cv::imshow("MyWindow2", img2);
cvWaitKey(0);
return 0;
}
но когда я пытаюсь запустить его, то он тормозит с пресловутым
"Не удалось правильно запустить приложение (0xc0000005). Нажмите кнопку" ОК ", чтобы закрыть приложение."
Что может быть не так и что будет решением этой проблемы?
- OpenCV (предварительно скомпилированный) распаковывается в "C:\OpenCV245PC\ (README,index.rst и CMakeLists.txt есть со всеми подпапками)
- Системный путь Windows установлен в C:\OpenCV245PC\build\x86\mingw\bin
- Компилятор Eclipse GCC C++, пути для включения (-I) имеет значение "C: \ OpenCV245PC \ build \ include"
- Eclipse MinGW C++ Linker, путь поиска библиотеки (-L) установлен на: "C: \ OpenCV245PC \ build \ x86 \ mingw \ lib"
- Eclipse MinGW C++ Linker, библиотеки (-l) установлены на:
opencv_calib3d245 opencv_contrib245 opencv_core245 opencv_features2d245 opencv_flann245 opencv_gpu245 opencv_highgui245 opencv_imgproc245 opencv_legacy245 opencv_ml245 opencv2cvc2_vv2
2 ответа
После многих проб и ошибок я решил следовать этому руководству и скомпилировать свои собственные двоичные файлы, поскольку кажется, что слишком много людей жалуются на то, что предварительно скомпилированные двоичные файлы НЕ работают для них. Eclipse CDT Juno уже установлен.
Моя процедура была следующей:
- Загрузите и установите MinGW и добавьте в систему PATH с помощью c:/mingw/bin
- Загрузите cmake с http://www.cmake.org/ и установите его
- Скачать версию OpenCV2.4.5 для Windows
- Установите / разархивируйте Opencv в C:\OpenCV245PC\ (README,index.rst и CMakeLists.txt есть со всеми подпапками)
- Запустите инструмент CMake GUI, затем
- Выберите C: \ OpenCV245PC \ в качестве источника
- Выберите место назначения, C:\OpenCV245MinGW\x86, где собрать двоичные файлы
- Нажмите кнопку Configure, выберите MinGW Makefiles в качестве генератора. В окне есть несколько красных бликов, выберите нужные параметры.
- Нажмите кнопку Configure еще раз. Настройка сейчас завершена.
- Нажмите кнопку "Создать".
- Выйдите из программы, когда генерация будет завершена.
- Выйдите из программы Cmake.
- Запустите режим командной строки (cmd.exe) и перейдите в каталог назначения C: \ OpenCV245MinGW \ x86
- Типа "mingw32-make". Вы увидите прогресс построения двоичных файлов. Если команда не найдена, необходимо убедиться, что системный PATH добавлен с помощью c:/mingw/bin. Сборка продолжается в соответствии с выбранными вариантами до завершения.
- В системе Windows PATH ("Мой компьютер"> щелкните правой кнопкой мыши> "Свойства"> "Дополнительно"> "Переменные среды"> "Путь") добавьте каталог bin целевого каталога C:\OpenCV245MinGW\x86\bin
- ПЕРЕЗАПУСТИТЬ КОМПЬЮТЕР
- Перейдите в Eclipse CDT IDE, создайте программу на C++, используя пример кода OpenCV (вы можете использовать код в верхней части этой темы).
- Перейдите в Проект> Свойства> Сборка C/C++> Настройки> Компилятор GCC C++> Включает и добавьте исходную папку OpenCV "C:\OpenCV245PC\build\include"
- Перейдите в Проект> Свойства> Сборка C/C++> Настройки> MinGW C++ Linker > Библиотеки и добавьте в библиотеки (-l) ОДИН ПО ОДНОМУ (это может варьироваться в зависимости от проекта, вы можете добавить их все, если хотите или некоторые из них только те, которые вам нужны для вашего проекта): 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:/ (или где бы вы ни находились, просто убедитесь, что затмение уже прочитано.
Можете ли вы попробовать этот код,
#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("lenna.png", CV_LOAD_IMAGE_COLOR);
namedWindow("MyWindow", CV_WINDOW_AUTOSIZE);
imshow("MyWindow", img);
waitKey(0);
return 0;
}
потому что кажется, что вы не создаете окно для img1 и не назначаете вывод imread для img2.