cvCreateImage в методе класса генерит исключение

cvCreateImage в методе класса генерит исключение

Сообщение vital » 03 мар 2010, 14:13

Код:

class MyClass{
IplImage* img;
public:
MyClass() { img = cvCreateImage(cvSize(10,10),8,1); }
~MyClass() { cvReleaseImage(&img); }
};

void main(int argc, char** argv)
{
MyClass obj;
}

текст ошибки: unhandled exception at... Access violation reading location

Что делать?? Очень хочется IplImage* в классе!
vital
 
Сообщения: 9
Зарегистрирован: 05 фев 2010, 22:13
Откуда: Таганрог

Re: cvCreateImage в методе класса генерит исключение

Сообщение =DeaD= » 03 мар 2010, 14:16

Это под каким компилятором?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: cvCreateImage в методе класса генерит исключение

Сообщение galex1981 » 03 мар 2010, 14:17

Выложите пожалуйста полностью проект или если хотите сами решить проблему - запустите дебаггер и посмотрите на какой строке он в этой функции остановится
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4363
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Re: cvCreateImage в методе класса генерит исключение

Сообщение vital » 03 мар 2010, 14:39

среда разработки: vs2008

Выложен весь проект :) ... за исключением хидеров. В коде главной функции выполнятся одна строка: вызов конструктора, конструктор выполняет строчку - img = cvCreateImage(cvSize(10,10),8,1) - и на этом месте генерится исключение.

Думаю, что это проблема внутренней реализации OpenCV. Нужно как-то ее обойти.
vital
 
Сообщения: 9
Зарегистрирован: 05 фев 2010, 22:13
Откуда: Таганрог

Re: cvCreateImage в методе класса генерит исключение

Сообщение =DeaD= » 03 мар 2010, 14:40

Наверное параметры перепутаны, провериться по хелпу надо. У меня такое часто было. Не пишет зараза, что ему конкретно не нравится.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: cvCreateImage в методе класса генерит исключение

Сообщение vital » 03 мар 2010, 15:24

Проверил параметры: все верно. Как про те лыжи..

Нашел в чем причина: в хидеры затесался файлик написаный в собственном исполнении,
там буквально следующее:

class ViWindows{
vector<string> names;
public:
ViWindows(vector<string> &v);
//void AddWindow(string name);
//void DestroyWindow(string name);
//void ArrangeWindowsToTable(int cols,int x_error,int y_error);
//~ViWindows();
};

ViWindows::ViWindows(vector<string> &v)
{
names = v;
for(int i=0;i<v.size();i++)
{
//TODO exeption

if(!cvNamedWindow(v[i].c_str(),CV_WINDOW_AUTOSIZE))
{
cout << "window creation error!";
break;
}
}
}

Причем конфликта не возникает, например с функцией cvQueryFrame.

Приложу исходный код, может быть кого-то заинтересует :)
Вложения
code.rar
(842 байт) Скачиваний: 1
vital
 
Сообщения: 9
Зарегистрирован: 05 фев 2010, 22:13
Откуда: Таганрог

Re: cvCreateImage в методе класса генерит исключение

Сообщение MiBBiM » 03 мар 2010, 22:55

под рукой нет хидеров, но навскидку, вы уверены что
Код: Выделить всё
IPL_DEPTH_8U == 8 // или какую глубину вам нужно
Tomorrow will be. Better
Аватара пользователя
MiBBiM
 
Сообщения: 1866
Зарегистрирован: 29 окт 2007, 18:11
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript

Re: cvCreateImage в методе класса генерит исключение

Сообщение =DeaD= » 03 мар 2010, 23:18

Вот и я о том же! :roll:
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: cvCreateImage в методе класса генерит исключение

Сообщение vital » 05 мар 2010, 19:43

Я проверял! :)

Неисправность вот в чем оказалась: собирал с помощью CMake. Собрал. Добавил в системные пути C:\OpenCV2.0\vs2008\bin\Debug и Release (как мне казалось) и с этого все и началось. Либы ссылались на dll, которые лежали в C:\OpenCV2.0\bin (который был уже прописан в системных путях), а не в вышеуказанных. Далее, компилятор требовал libcv200.dll.a, я ему его давал, он работал, но как - неизвестно.

Вообщем, прописал в системных путях C:\OpenCV2.0\vs2008\bin\Debug и Release, компилятору дал cv200.lib и прочие..
vital
 
Сообщения: 9
Зарегистрирован: 05 фев 2010, 22:13
Откуда: Таганрог


Вернуться в Компьютерное зрение

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5