OpenCV 2.3 и Visual Studio 2010 - PullRequest
       3

OpenCV 2.3 и Visual Studio 2010

4 голосов
/ 12 июля 2011

У меня так много проблем с установкой 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> код -206 int + err «Нераспознанный или неподдерживаемый тип массива» std :: basic_string, std :: allocator> + func "" std :: basic_string, std :: allocator> + файл "...... \ modules \ core \ src \ array.cpp" std :: basic_string, std :: allocator> линия 2482 int

Спасибо!

Ответы [ 6 ]

2 голосов
/ 12 июля 2011

У меня OpenCV2.3, и у меня не было проблем с его установкой с Visual Studio v9.0.

Что вы должны сделать, чтобы правильно скомпилировать и запустить ваш проект во всех версиях Visual Studio:

Свойства вашего проекта (щелкните правой кнопкой мыши по нему)

  • C / C ++
    • General
      • Включите каталог, добавьте <ваш каталог> \ OpenCV2.3 \ include \ opencv2, <ваш каталог> \ OpenCV2.3 \ include \ opencv и <ваш каталог> \ OpenCV2.3 \включает
  • Linker
    • General
      • Добавить каталог lib <ваш каталог> \ OpenCV2.3 \ lib
    • Ввод
      • Добавьте все библиотеки, например opencv_core230d.lib opencv_highgui230d.lib и т. Д. ...

Тогда не забудьте добавить dll к вашему системному пути. Панель конфигурации> Система> Дополнительно> Переменные среды> Путь Вы можете добавить путь к среде пользователя, который переопределит другой, просто нажмите «Создать» (если вы никогда не добавляли каталог в системный путь раньше) и напишитепуть, например: <ваш каталог> \ OpenCV2.3 \ bin

Надеюсь, без дополнительной информации это может помочь ...

Julien,

1 голос
/ 12 июля 2011

Иногда компилятор не может найти DLL, даже если у вас есть правильные настройки пути.В этот момент попробуйте скопировать dll-файлы из папки openCV в папку текущего проекта (не решения).

0 голосов
/ 02 февраля 2014

Вы должны попробовать создать структуру цикла:

#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;

}
0 голосов
/ 30 июня 2013

Проверьте ваш брандмауэр.полностью отключить брандмауэр.Ваш антивирус может заблокировать процесс тоже.У меня была такая же проблема: cv::exception для памяти, и это было ее причиной.

0 голосов
/ 02 августа 2011

У меня точно такая же проблема. Я не мог прочитать ни одного изображения. Я проверил флаг данных и размер изображения. Флаг указывал на ошибку и размер всегда был (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 сам, или если он был там с самого начала. Я сделал много вещей, чтобы заставить его работать, и был немного смущен. Но Я полагаю, вы сами можете понять это, если что-то не так с заголовком.)

Надеюсь, это поможет, Pinyo

0 голосов
/ 12 июля 2011

Вместо копирования вставьте ссылку: http://theroundedengineer.blogspot.com/2011/07/opencv-23-for-vs-2008-from-source.html

Надеюсь, это поможет.Конечно, я далеко не эксперт по различиям между VS 2008 и VS 2010.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...