27 февраля 2013 в 13:11

Использование OpenCV в Delphi

Так случилось, что я активно использую Delphi в своей работе (программирование по работе, собственные открытые и закрытые проекты) и вот мне понадобилось написать программу, использующую открытую библиотеку компьютерного зрения OpenCV. Что же делать, ведь официально OpenCV использовать в Delphi невозможно, а перебираться на C ради одной программы слишком долго.

Но нет ничего невозможного…


Немного поискав в интернете, я нашел несколько проектов по использованию OpenCV в Delphi.
Первый, второй, третий и наиболее свежий и удачный — четвертый, который я и взял за основу.

Проект на github мне показался интересным, реализовано много функций OpenCV, есть много примеров на Delphi, но проект заброшен автором и пришлось взяться за свой.

Все текущие наработки я выложил на code.google.com/p/opencv-delphi-new

В настоящий момент сделано:
1. Поддержка RAD Studio XE3.
2. Добавлены новые функции: cvFlip, cvClearMemStorage, cvCreateChildMemStorage, cvRectangle, cvRetrieveFrame, cvIntegral, cvGetPerspectiveTransform, cvWarpPerspective, cvCreateMat, cv2DRotationMatrix, cvWarpAffine, cvFindContours, cvHaarDetectObjects.
3. Добавлено 6 новых примеров:
FaceDetect — Пример детектирования лица в видеопотоке с использованием преобразования Хафа.
FindContours — Нахождение контуров изображения.
Integral — Интегральное изображение.
WarpAffine — Трансформация изображения — аффинные преобразования (Поворот изображения на произвольный угол).
WrapPrespective — Трансформация изображения — гомография (Перспективная трансформация).
MatchShapes — Поиск объекта на изображении по шаблону (Сравнение объектов по моментам их контуров).

В добавленных примерах я постарался подробно расписать все манипуляции для достяжения нужного результата.

Если кому-то будет интересна тема использования OpenCV в Delphi, то пишите мне на email или оставляйте комментарии.
Если тематика использования OpenCV в принципе интересна, то могу написать несколько статей, только напишите, какое направление использования OpenCV Вас интересует.
Михаил Григорьев @Sleuthhound
карма
–13,0
рейтинг 0,0
Заместитель директора по ИТ и ИБ

Комментарии (10)

  • +2
    Тема безусловно интересна.
    Интересует направление «Распознавание дорожных знаков», «Распознавание автомобильных номеров»
    • +2
      Как раз занимаюсь этими вопросами, тема очень интересная и мало освещенная в интернете.
  • +3
    меня интересует больше распознавание руки — в частности движение кисти и пальцев.
    можно будет написать простенькое приложение для управления компьютером через вэбкамеру.
    • 0
      >>распознавание руки — в частности движение кисти и пальцев.

      Это довольно сложная задача, думаю даже с помощью одной камеры не решаемая, вспомните Microsoft Kinect, там не только камера участвует в распознавании.
      • 0
        ну там не только камера для 3х-мерного отслеживания, а двумерное распознавание (лодонь в одной плоскости) думаю возможно
        • 0
          На самом деле по «Распознавание дорожных знаков», «Распознавание автомобильных номеров» теоретической литературы полным полно, и даже есть практические проекты с исходниками (и они хоть и криво но работают), но все они почему то загнулись на начальной стадии, то ли авторы не осилили вопрос, то ли им помогли не осилить.
  • 0
    Работа с видеопотоком, распознание движущихся объектов, поиск и распознание лиц. Ну и как сказано выше: распознание дорожных знаков и автомобильных номеров. С математикой и примерами было-бы очень интересно.
  • 0
    И ещё, интеграция OpenCL и OpenCV — не копали в этом направлении? Естественно со стороны использования в Delphi.
    • 0
      В этом направлении не копал, но на вскидку OpenCL в Delphi есть тут ->
      code.google.com/p/delphi-opencl/
      хотя проект заглох вроде бы
  • 0
    Вообще как вариант можно было бы это применить в таком коммерческом проекте!!!

    www.itv.ru/products/intellect/additional_modules/rw/

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.