roboforum.ru

Технический форум по робототехнике.

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* в классе!

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

=DeaD= » 03 мар 2010, 14:16

Это под каким компилятором?

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

galex1981 » 03 мар 2010, 14:17

Выложите пожалуйста полностью проект или если хотите сами решить проблему - запустите дебаггер и посмотрите на какой строке он в этой функции остановится

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

vital » 03 мар 2010, 14:39

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

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

Думаю, что это проблема внутренней реализации OpenCV. Нужно как-то ее обойти.

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

=DeaD= » 03 мар 2010, 14:40

Наверное параметры перепутаны, провериться по хелпу надо. У меня такое часто было. Не пишет зараза, что ему конкретно не нравится.

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

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

MiBBiM » 03 мар 2010, 22:55

под рукой нет хидеров, но навскидку, вы уверены что
Код: Выделить всёРазвернуть
IPL_DEPTH_8U == 8 // или какую глубину вам нужно

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

=DeaD= » 03 мар 2010, 23:18

Вот и я о том же! :roll:

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 и прочие..


Rambler\'s Top100 Mail.ru counter