Перейти к содержимому
Compvision.ru
FormatCft

Как прикрутить OpenCV к билдеру?

Recommended Posts

Именно так. Дамаете, что идея бредовая? Facedetect я переписал на делфи. Сейчас пробую переписать заголовочные файлы полностью - надеюсь, что терпения хватит. Могу потом выложить, что получится.

Здравствуйте.

А можно исходники переписанного Facedetect?

Мучаюсь уже неделю. cvLoad и cvHaarDetectObjects еще не победил.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

На другой машине стала загружать каскад при помощи cvLoad.

Однако на мой код постоянно выдает Access violation at 005CE4E4 in libcv200.dll. Read of FFFFFFFF

Как будто пытается достучаться до несуществующего объекта.

Уже половину кода закомментил. То запустишь - работает, то не работает (большую часть времени).

Вот код:

var

  cascade: PCvHaarClassifierCascade;

  capture: PcvCapture;

  image: PIplImage;

  frame, gray: PCvMat;

  frame_, gray_: CvMat;

  s: CvSize;

  storage: pointer;

  faces: PCvSeq;

begin

  s.w:= 30;

  s.h:= 30;

  cascade:= nil;

  capture:= nil;

  image:= nil;

  storage:= nil;

  faces:= nil;


  cascade:= cvLoad(pchar('haarcascade_frontalface_alt.xml'), nil, nil, nil);

  if not bool(cascade) then

  begin

	smsg('ERROR: Could not load classifier cascade');

	exit;

  end;


  {capture:= cvCreateCameraCapture(0);

  if not bool(capture) then

  begin

	smsg('ERROR: Could not create cam capture');

	exit;

  end;

  image:= cvQueryFrame(capture);}


  image:= cvLoadImage(pchar('lena.jpg'), CV_LOAD_IMAGE_UNCHANGED);

  frame:= cvGetMat(image, @frame_, nil, 0);


  //cvNamedWindow('result', 1);

  //cvShowImage('result', frame);


  if bool(frame) then

  begin

	gray:= cvInitMatHeader(@gray_, image^.height, image^.width, CV_8UC1, nil, CV_AUTOSTEP);

	cvCreateData(gray);

	cvCvtColor(frame, gray, CV_BGR2GRAY);

	cvEqualizeHist(gray, gray);

	//storage:= cvCreateMemStorage(0);

	//faces:= cvHaarDetectObjects(gray, cascade, storage, 1.1, 2, CV_HAAR_DO_CANNY_PRUNING, s);

	//cvShowImage('result', gray);

	//if bool(storage) then cvReleaseMemStorage(@storage);

	//if bool(gray) then cvReleaseMat(@gray);

	//if bool(frame) then cvReleaseMat(@frame);

  end;


  //if bool(image) then cvReleaseImage(@image);

  //cvReleaseCapture(@capture);

end;

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А нельзя в паскале что то типа этого написать, вместо плясок с матрицами? (я просто не пробовал на паскале)

img = cvLoadImage("OpenCv.jpg");

gray = cvCreateImage(cvSize(img->width,img->height), IPL_DEPTH_8U, 1);

cvCvtColor(img, gray, CV_BGR2GRAY); // Получаем серый цвет

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В принципе да. Но, все равно глюки.

Вот это работает

image:= cvLoadImage(pchar('lena.jpg'), 1);

  gray:= cvCreateImage(cvSize_(image^.width, image^.height), 8, 1);

  cvCvtColor(image, gray, CV_BGR2GRAY);
А вот это уже выдает ошибку
 image:= cvLoadImage(pchar('lena.jpg'), 1);

  gray:= cvCreateImage(cvSize_(image^.width, image^.height), 8, 1);

  cvCvtColor(image, gray, CV_BGR2GRAY);

  cvEqualizeHist(gray, gray);

Такое чувство что cvCvtColor еще работает с данными, а cvEqualizeHist уже пытается получить к ним доступ. Но ведь так не должно быть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Решил проблему довольно просто.

Использую версию 1.0. Вторая просто глючная ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Иногда, когда не получается, полезно читать readme.

Библиотеки во второй версии собраны под MinGW. Собрал в Visual Studio 2008 и теперь все работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Тоже не выгружаются многие аппликухи, использующие OpenCV.

Причем, есть два компьютера (оба Win XP): на одном все корректно завершается, на другом - остаются "призраки". Не выгружается на втором даже большинство OpenCVшных самплов.

За прошедшее с последнего сообщения время никто проблему так и не решил?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Тоже не выгружаются многие аппликухи, использующие OpenCV.

Причем, есть два компьютера (оба Win XP): на одном все корректно завершается, на другом - остаются "призраки". Не выгружается на втором даже большинство OpenCVшных самплов.

За прошедшее с последнего сообщения время никто проблему так и не решил?

Сталкивался с таким поведением, когда камера не останавливала свою работу корректно.

При этом: не запускались другие приложения, лампочка на камере светилась, процессы застревали в памяти, помогала только холодная перезагрузка.

Отсюда предложение, может перед завершением приложения надо подождать отключения камеры?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Сталкивался с таким поведением, когда камера не останавливала свою работу корректно.

При этом: не запускались другие приложения, лампочка на камере светилась, процессы застревали в памяти, помогала только холодная перезагрузка.

Отсюда предложение, может перед завершением приложения надо подождать отключения камеры?

Не, такая фигня происходит с совершенно разными Open CV приложениями (родными примерами), в т.ч. и не использкющими камеру.

А в своей собственной программе я получаю такую же проблему даже просто добавив инклуды OCVшных хедеров. Вообще не вызывая из них ничего.

Причем, до закрытия программа функционирует совершенно нормально, и после попытки закрытия "подвисший призрак" ничуть не мешает запуску и работе других аппликух - в т.ч. и запуску других копий этой же. Что с камерой - что без. Никаких явных сбоев, кроме того, что остается лишний процесс, жрущий ~10 метров памяти.

И это только на одном компе, на другом - все ОК. Вот только запустить в результате надо на том, на котором не ОК :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Не, такая фигня происходит с совершенно разными Open CV приложениями (родными примерами), в т.ч. и не использкющими камеру.

А в своей собственной программе я получаю такую же проблему даже просто добавив инклуды OCVшных хедеров. Вообще не вызывая из них ничего.

Причем, до закрытия программа функционирует совершенно нормально, и после попытки закрытия "подвисший призрак" ничуть не мешает запуску и работе других аппликух - в т.ч. и запуску других копий этой же. Что с камерой - что без. Никаких явных сбоев, кроме того, что остается лишний процесс, жрущий ~10 метров памяти.

И это только на одном компе, на другом - все ОК. Вот только запустить в результате надо на том, на котором не ОК :)

А если ему дать задание на самоубийство: после завершения послать процессу WM_CLOSE, если не поможет то через TerminateProcess.

Мне не проверить предположение, у меня все очищается и так.

И еще, какие точно версии WindowsXP стоят на одном (где все очищается) и на другом (на котором нет)?

Можно ли убить призрак через диспетчер задач?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Народ помогите!Я пытаюсь поставить OpenCV2.0 и Borland C++ Builder и запустить какой нить проект.. но ниче не выходит.. Builder то не находит библиотеки то выскакивают какие то ошибки.. Пожалуйста напишите подробную инструкцию по установке.. Заранее благодарен...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Народ помогите!Я пытаюсь поставить OpenCV2.0 и Borland C++ Builder и запустить какой нить проект.. но ниче не выходит.. Builder то не находит библиотеки то выскакивают какие то ошибки.. Пожалуйста напишите подробную инструкцию по установке.. Заранее благодарен...

Тема есть здесь:

http://www.compvision.ru/forum/index.php?showtopic=64

Подробнее уже не очень помню. Но вроде делал так:

0) Надо установить MSVCR.

1) Собрал dll-ки и lib-ы под VS2008 при помощи CMAKE.

2) Сконвертировал (lib-ы) при помощи libconverter-a где то на форуме валяется. Можно использовать стандартный борландовский COFF2OMF.exe из командной строки.

3) Поправил заголовочники под Borland-овский компилятор (файлы которые у меня получились лежат в топике, упомянутом выше.).

4) Подключить библиотеки к проекту так же как и для OpenCV 1.1.

У некоторых (или у многих, процент не знаю) возникают проблемы с файлами (Lib, dll) моей сборки, так что первый пункт лучше сделать самостоятельно.

PS: А каких библиотек не хватает? Там часть можно отключить типа jpeg,png.... и т.д.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я попробовал скачал по твоей ссылке VisionLab. Поставил.. Запускаю пример..Пишет что не может найти VLAVIPlayer.PAS файл. Я так пробовал и в билдере и делфи. Одна и таже ошибка. У кого нить нормально поставились и заработали эти компоненты? Как мне это исправить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Я попробовал скачал по твоей ссылке VisionLab. Поставил.. Запускаю пример..Пишет что не может найти VLAVIPlayer.PAS файл. Я так пробовал и в билдере и делфи. Одна и таже ошибка. У кого нить нормально поставились и заработали эти компоненты? Как мне это исправить?

Извиняюсь, ошибся со ссылкой :).

Вот здесь надо смотреть:

http://www.compvision.ru/forum/index.php?showtopic=202

А что касается VisionLab, и других компонентов в билдере, надо указать (проверить) пути к библиотекам в свойствах проекта (в 6 - м билдере пути обычно урезаются по умолчанию и он сам потом не может найти файлы).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Пишу в коде:

f=fopen(filename,"w");

fprintf(f,"%s",str);

Компиляция - успешно.

Запускаю - требует haartraining.dll.

Смотрю haartraining.lib - действительно, есть упоминание про обе этих функции. Пробую удалять библиотеку - ругается.

Может кто-то сталкивался и знает что можно сделать?

Честно говоря не очень понимаю, зачем нужно было в haartraining такое писать - stdio.h это же святое! :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В билдере тоже ругается, но если из проекта удалить все лишние lib файлы, включая haartraining.lib, то ошибка пропадает.

У меня к проекту обычно подключены:

cv200.lib

cvaux200.lib

cvcore200.lib

cxtx200.lib

highgui200.lib

ml200.lib

opencv_ffmpeg200.lib

И компилируется без проблем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо. Получилось.

Я тоже в билдере работаю. Помогла фраза "если из проекта удалить". Не часто подключаю сторонние библиотеки, забыл что нужно нажать Project->Remove from project. До этого то пытался просто файл haartraining.lib удалить :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вылезла проблема, не загружаются классификаторы:

procedure TForm1.Button1Click(Sender: TObject);

var img : PIplImage;

file1 : PChar;

file2 : PChar;

begin

file1 := 'haarcascade_frontalface_alt.xml';

file2 := 'haarcascade_eye.xml';

cascade_f := cvLoad(file1,0,0,0);

cascade_e := cvLoad(file2,0,0,0);

...

cascade_f и cascade_е остаются nil

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Вылезла проблема, не загружаются классификаторы:

procedure TForm1.Button1Click(Sender: TObject);

var img : PIplImage;

file1 : PChar;

file2 : PChar;

begin

file1 := 'haarcascade_frontalface_alt.xml';

file2 := 'haarcascade_eye.xml';

cascade_f := cvLoad(file1,0,0,0);

cascade_e := cvLoad(file2,0,0,0);

...

cascade_f и cascade_е остаются nil

В посте №16 вреде все загружается: http://www.compvision.ru/forum/index.php?s...dpost&p=949

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Вылезла проблема, не загружаются классификаторы:

procedure TForm1.Button1Click(Sender: TObject);

var img : PIplImage;

file1 : PChar;

file2 : PChar;

begin

file1 := 'haarcascade_frontalface_alt.xml';

file2 := 'haarcascade_eye.xml';

cascade_f := cvLoad(file1,0,0,0);

cascade_e := cvLoad(file2,0,0,0);

...

cascade_f и cascade_е остаются nil

а если так:

file1 := PChar('haarcascade_frontalface_alt.xml');

cascade_f := cvLoad(file1,0,0,0);

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Все нормально, там просто все очень критично с путями. Я каскады засунул в одноименную папку (для чистоты :)) и обращаюсь к ним таким вот образом:

c_path := ExtractFilePath(ParamStr(0))+'cascades\';

f1 := c_path+'haarcascade_frontalface_alt.xml';

file1 := PChar(f1);

cascade_f := cvLoad(file1,0,0,0);

Вот, если кому интересно - проэкт на делфи, который находит лица, глаза, нос и рот.

Напоминаю: для успешной работы в папке должна быть бибилиотека VCOpenCV.dll

OCV.ZIP

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Пишу в CodeGear C++ Builder 11.0. При компиляции выскакивают ошибки:

[iLINK32 Error] Error: Unresolved external '_cvCreateCameraCapture' referenced from C:\DOCUMENTS AND SETTINGS\TTL-+T+г\¦+L -+¦L¦+=T-\RAD STUDIO\PROJECTS\PROGECTFIRSTTEST\DEBUG\UNIT1.OBJ

[iLINK32 Error] Error: Unresolved external '_cvInitFont' referenced from C:\DOCUMENTS AND SETTINGS\TTL-+T+г\¦+L -+¦L¦+=T-\RAD STUDIO\PROJECTS\PROGECTFIRSTTEST\DEBUG\UNIT1.OBJ

[iLINK32 Error] Error: Unresolved external '_cvGrabFrame' referenced from C:\DOCUMENTS AND SETTINGS\TTL-+T+г\¦+L -+¦L¦+=T-\RAD STUDIO\PROJECTS\PROGECTFIRSTTEST\DEBUG\UNIT1.OBJ

[iLINK32 Error] Error: Unresolved external '_cvRetrieveFrame' referenced from C:\DOCUMENTS AND SETTINGS\TTL-+T+г\¦+L -+¦L¦+=T-\RAD STUDIO\PROJECTS\PROGECTFIRSTTEST\DEBUG\UNIT1.OBJ

[iLINK32 Error] Error: Unresolved external '_cvCreateImage' referenced from C:\DOCUMENTS AND SETTINGS\TTL-+T+г\¦+L -+¦L¦+=T-\RAD STUDIO\PROJECTS\PROGECTFIRSTTEST\DEBUG\UNIT1.OBJ

[iLINK32 Error] Error: Unresolved external '_cvCopy' referenced from C:\DOCUMENTS AND SETTINGS\TTL-+T+г\¦+L -+¦L¦+=T-\RAD STUDIO\PROJECTS\PROGECTFIRSTTEST\DEBUG\UNIT1.OBJ

[iLINK32 Error] Error: Unresolved external '_cvCloneImage' referenced from C:\DOCUMENTS AND SETTINGS\TTL-+T+г\¦+L -+¦L¦+=T-\RAD STUDIO\PROJECTS\PROGECTFIRSTTEST\DEBUG\UNIT1.OBJ

[iLINK32 Error] Error: Unresolved external '_cvConvertScale' referenced from C:\DOCUMENTS AND SETTINGS\TTL-+T+г\¦+L -+¦L¦+=T-\RAD STUDIO\PROJECTS\PROGECTFIRSTTEST\DEBUG\UNIT1.OBJ

[iLINK32 Error] Error: Unresolved external '_cvMerge' referenced from C:\DOCUMENTS AND SETTINGS\TTL-+T+г\¦+L -+¦L¦+=T-\RAD STUDIO\PROJECTS\PROGECTFIRSTTEST\DEBUG\UNIT1.OBJ

[iLINK32 Error] Error: Unresolved external '_cvGetRawData' referenced from C:\DOCUMENTS AND SETTINGS\TTL-+T+г\¦+L -+¦L¦+=T-\RAD STUDIO\PROJECTS\PROGECTFIRSTTEST\DEBUG\UNIT1.OBJ

[iLINK32 Error] Error: Unresolved external '_cvReleaseImage' referenced from C:\DOCUMENTS AND SETTINGS\TTL-+T+г\¦+L -+¦L¦+=T-\RAD STUDIO\PROJECTS\PROGECTFIRSTTEST\DEBUG\UNIT1.OBJ

[iLINK32 Error] Error: Unresolved external '__fastcall TForm1::FormCreate(System::TObject *)' referenced from C:\DOCUMENTS AND SETTINGS\TTL-+T+г\¦+L -+¦L¦+=T-\RAD STUDIO\PROJECTS\PROGECTFIRSTTEST\DEBUG\UNIT1.OBJ

[iLINK32 Error] Error: Unresolved external '__fastcall TForm1::Image1Click(System::TObject *)' referenced from C:\DOCUMENTS AND SETTINGS\TTL-+T+г\¦+L -+¦L¦+=T-\RAD STUDIO\PROJECTS\PROGECTFIRSTTEST\DEBUG\UNIT1.OBJ

[iLINK32 Error] Error: Unresolved external '_cvReleaseCapture' referenced from C:\DOCUMENTS AND SETTINGS\TTL-+T+г\¦+L -+¦L¦+=T-\RAD STUDIO\PROJECTS\PROGECTFIRSTTEST\DEBUG\UNIT1.OBJ

Что посоветуете? Заранее спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Надо подключить библиотеки (.lib) к проекту.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Все, разобрался! Только возникает другой вопрос: пытаюсь загрузить картинку с помощью команды frame = cvLoadImage("img.jpg",1), но содержимое frame = NULL?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×