OpenCV 2.3 и Visual Studio 2010
У меня так много проблем с установкой openCV 2.3 с visual studio 2010. Сбой после сбоя, установка после установки и через несколько недель мне не повезло. К сожалению, нет никаких установочных документов для openCV 2.3, а структура каталогов и расположение файлов отличаются от openCV 2.2, что делает текущие руководства практически бесполезными.:(
У кого-нибудь был успех с openCV 2.3? Может кто-нибудь, пожалуйста, попробуйте и дайте мне знать, если это проблема сборки openCV или мои настройки?
Или, может быть, кто-то может предложить альтернативу openCV. Моя конечная цель состоит в том, чтобы получить информацию о пикселях, использовать функции inpaint и базовую обработку изображений для After Effects и Maya.
РЕДАКТИРОВАТЬ: Извините, я думал, что я изложил ошибку! Вот что происходит, когда я запускаю код:
#include <iostream>
#include <cv.h>
#include <highgui.h>
using namespace cv;
int main()
{
Mat image;
image = imread( "c:/image1.png", 1 );
namedWindow( "Gray image", CV_WINDOW_AUTOSIZE );
imshow( "Gray image", image );
waitKey(0);
return 0;
}
Это работает до Imshow. Если я закомментирую imshow, он будет работать без ошибок. Вот ошибки, когда я добавляю IMSHOW:
Необработанное исключение в 0x76bfb727 в openCV_test.exe: Microsoft C++ исключение: cv:: Исключение в ячейке памяти 0x0015ec20. и это дает мне возможность сломаться или продолжить.
Вот что показывает окно вывода:
Исключение первого шанса в 0x76bfb727 в openCV_test.exe: Microsoft C++ исключение: cv:: Исключение в ячейке памяти 0x0015ec20.. Необработанное исключение в 0x76bfb727 в openCV_test.exe: Microsoft C++ исключение: cv:: Исключение в ячейке памяти 0x0015ec20..
Затем он открывает SYSTEM.CPP и дает мне это:
- exc {msg = "...... \ modules \ core \ src \ array.cpp: 2482: ошибка: (-206) нераспознанный или неподдерживаемый тип массива" code=-206 err="нераспознанный или неподдерживаемый тип массива" ...} const cv::Exception & + std::exception {_Mywhat=0x00000000 _Mydofree=false } std::exception + msg "......\modules\core\src\array.cpp:2482: ошибка: (-206) Нераспознанный или неподдерживаемый тип массива " std::basic_string,std::allocator > code -206 int + err " Нераспознанный или неподдерживаемый тип массива " std::basic_string,std::allocator > + func "" std::basic_string,std::allocator > + file "......\modules\core\src\array.cpp" std::basic_string,std::allocator > строка 2482 int
Спасибо!
6 ответов
У меня OpenCV2.3, и у меня не было проблем с установкой Visual Studio v9.0.
Что вы должны сделать, чтобы правильно скомпилировать и запустить ваш проект во всех версиях Visual Studio:
Свойства вашего проекта (щелкните по нему правой кнопкой мыши)
- C / C++
- генеральный
- Включите каталог, добавьте <ваш каталог>\OpenCV2.3\include\opencv2, <ваш каталог>\OpenCV2.3\include\opencv и <ваш каталог>\ OpenCV2.3 \ include
- Linker
- генеральный
- Добавьте каталог lib <ваш каталог>\ OpenCV2.3 \ lib
- вход
- Добавьте все библиотеки, например opencv_core230d.lib opencv_highgui230d.lib и так далее...
Тогда не забудьте добавить dll к вашему системному пути.Панель конфигурации> Система> Дополнительно> Переменные среды> Путь. Вы можете добавить путь к среде пользователя, который будет заменять другой, просто нажмите "Создать" (если вы никогда ранее не добавляли каталог в системный путь) и введите путь, например: <ваш каталог >\ OpenCV2.3 \ Bin
Без дополнительной информации, я надеюсь, что это могло бы помочь...
Жюльен,
Иногда компилятор не может найти DLL, даже если у вас есть правильные настройки пути. В этот момент попробуйте скопировать dll-файлы из папки openCV в папку текущего проекта (не решения).
Вместо того, чтобы копировать вставки, я просто ссылку: http://theroundedengineer.blogspot.com/2011/07/opencv-23-for-vs-2008-from-source.html
Надеюсь, это поможет. Конечно, я далеко не эксперт по различиям между VS 2008 и VS 2010.
У меня точно такая же проблема. Я не мог прочитать ни одного изображения. Я проверил флаг данных и размер изображения. Флаг указывал на ошибку и размер всегда был (0, 0). Хотя я не знаю истинную причину, я как-то мог избежать проблемы и нормально запустить мою программу.
Сначала я сам скомпилировал OpenCV. Несмотря на то, что все dll, казалось, были созданы правильно, и не было никакой ошибки сборки, я заметил, что папки заголовков не правильно организованы. Поэтому я переключился на двоичный пакет superpack и попробовал статическое связывание. В начале было много неопределенных символов, поэтому я просто поместил все в параметры ссылок VS. Количество библиотек, которые мне приходилось вводить в VS, было довольно абсурдным, но это хороший способ проверить, работает ли суперпакет.
Это то, что я использую. opencv_core230d.lib;opencv_calib3d230d.lib;opencv_contrib230d.lib;opencv_features2d230d.lib;opencv_highgui230d.lib;opencv_legacy230d.lib;opencv_ml230d.lib;opencv_imgproc230d.lib;opencv_video230d.lib;libjasperd.lib;libjpegd.lib;libpngd.lib;libtiffd. Lib;zlibd.lib;
Мне также нужно ввести Comctl32.lib для устранения ошибки компоновки.
Я протестировал свою программу со статическими библиотеками суперпакета. Теперь все работает хорошо. Заголовки, которые я использовал
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
Я пока не пытаюсь использовать dll, но могу подтвердить, что VS 2010 + OpenCV 2.3 64 bit из superpack работают. Надеюсь, вам тоже повезет с суперпаком.
(Хм, я не могу вспомнить, поместил ли я opencv.hpp в папку opencv2 сам, или если он был там с самого начала. Я сделал много вещей, чтобы заставить это работать, и был немного смущен. Но, я полагаю, Вы можете понять это сами, если что-то не так с заголовком.)
Надеюсь, это поможет, Пиньо
Вы должны попытаться сделать структуру цикла:
#include <iostream>
#include <cv.h>
#include <highgui.h>
using namespace cv;
int main(){
Mat image;
namedWindow( "Gray image", 2 );
while(1){
image = imread( "d://Gaa6P.png", 1 );
imshow( "Gray image", image );
waitKey(0);
}
return 0;
}
Проверьте свой брандмауэр. полностью отключить брандмауэр. Ваш антивирус может заблокировать процесс тоже. У меня такая же проблема: cv::exception
на память, и это было причиной.