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

Delphi/Lazarus

Recommended Posts

Привет!

пишу на дельфи, писал... его хорошо знаю, но он мне пока не по корману. Поэтому использую бесплатный Lazarus (фрипаскаль)

Начал изучать OpenCV. 2-ой день как уже начал, а он весь в Си :)

Наткнулся на библиотеку CVopenCV.dll ну и andrew smirnov выложил ПАСы (delphi_header), на лазарусе идет нормально.

Смотрел её утилитой dllview, судя по кол-ву функции в проекте для дельфи описаны не все функции из CVopenCV.dll. Например capture с камеры не описан :rolleyes:

Хотя есть вроде всё самое нужное.

Думаю можно посидеть и дописать если возникнет необходимость, а Си немного понимаю. Есть хорошая известная книга, но перевода пока его маловато )) в http://locv.ru/ изучаю, спасибо автору проекта.

Так что если не понятно буду спрашивать (ну не по паскалю), а по принципу работы.

есть проблема с русскими путями (OC VISTA), почему-то у меня из "русских" папок и "русских" имен файлов не грузит.

это нюанс среды разработки?

После возни с указателями и классами, я уже разобрался с загрузкой изображения cvLoadImage, всякого рода "порогами", канни и ковыряю cvFindContours, нахожу контуры.

Извините за не внимательность не успел всё прочесть, а хочется быстрее. Имеются вопросы:

1. как подгружать рабочий стол (снимок рабочего стола)? если через GetDesktopWindow(хэндл_рабочего_стола) этот указатель на битмап в сразу бы IplImage, или на это в OpenCV стандартная функция имеется (в библиотеке не нахожу).

2.При поиске объектов на фотографии (не лица, сложные фигуры), что лучше применить? и что быстрее работает? Пока понимаю есть метод сравнения контуров. А классификаторы Хаара "привязаны" к лицам? Эти хранилища можно "переучить"?

Спасибо

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


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

А классификаторы Хаара "привязаны" к лицам? Эти хранилища можно "переучить"?

Насколько я знаю можно, для этого нужно много много фоток с объектом и без него, и примерно денёк чтобы комп всё это обработал

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


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

с загрузкой скрина в ipl вроде разобрался

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

процедура скриншота:

Procedure  DesktopToIpl(iplimg:PIplImage);

var

c: TCanvas;

r: TRect;

bmp:TBitmap;

bmpsize:Integer;

begin

   bmp:=TBitmap.Create; // структура битмапа

   c := TCanvas.Create; // структура временной канвы

   c.Handle := GetWindowDC(GetDesktopWindow); // хэндл DC

   try

     bmp.PixelFormat:=pf8bit;

     r := Rect(0, 0, Screen.Width, Screen.Height);

     bmp.Width := Screen.Width;

     bmp.Height := Screen.Height;

     bmp.Canvas.CopyRect(r, c, r); // загружаем данные в битмап

   finally

     ReleaseDC(0, c.Handle);

     c.Free;

   end;

   bmpsize:=bmp.RawImage.DataSize; // размер битмапа

   copymemory(iplimg^.imageData, bmp.RawImage.Data,bmpsize); // копируем данные в Ipl контейнер

   copymemory(iplimg^.imageDataOrigin, bmp.RawImage.Data,bmpsize); // нужен для корректной делокации? без этого работает

   iplimg^.imageSize:=bmpsize; // устаналиваем размер битмапа в Ipl

   bmp.Free;

end;
как это пользовать:
procedure TForm1.Button1Click(Sender: TObject);

var

ipl,ipl2:PIplImage;

iplsize: cvSize;

begin

      iplsize.height:=Screen.Height;

      iplsize.width:=Screen.Width;

      ipl:=cvCreateimage(iplsize,8,3); // структура ipl, 8 бит, 3 канала

      ipl2:=cvCreateimage(iplsize,8,1); // структура 8 бит, серый

      DesktopToIpl(ipl); // скриншот экрана

      cvNamedWindow('main',CV_WINDOW_AUTOSIZE);

      cvCvtColor(pointer(ipl),pointer(ipl2), CV_BGR2GRAY); // из цветного в серый

      cvShowImage('main', pointer(ipl2)); // вывод на экран

end;

работает в лазарусе, в дельфях по идее должен работать

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


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

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

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

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

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

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

Войти

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

Войти сейчас


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

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

×