Наложение изображения при помощи OpenCV

Однажды мне понадобилось совместить два изображения таким образом, чтобы было видно перемещение человека, т.е. не одна фигура на экране, а две – начальная и конечная позиция. Сразу же возникла идея не вручную это делать, а при помощи функции отличий OpenCV. Итак, изначально есть два изображения:



( Читать дальше )

Онлайн кодирование-декодирование DataMatrix


Пример кодирование-декодирование DataMatrix кодов на intelligenthelper.com. Пока реализовано в тестовой пробной версии.

Работа с XML/YAML в OpenCV

Сохранение и работа с форматами XML и YAML является одной из встроенных возможностей OpenCV.

CvFileStorage
typedef struct CvFileStorage{
… // hidden fields
} CvFileStorage;


Структура CvFileStorage – это «черный ящик», представляющий собой хранилище, связанное с файлом на диске. Есть несколько функций, которые позволяют загружать и сохранять иерархические коллекции, которые состоят из скалярных значений, стандартных CXCore объектов и объектов, определенных пользователем.
CXCore может читать и записывать данные в формате XML (http://www.w3c.org/XML) или YAML (http://www.yaml.org). Ниже представлен пример из документации OpenCV сохранения единичной матрицы 3x3 в XML и YAML.


( Читать дальше )

FREE DataMatrix Online Reader

Заработал в тестовой версии онлайн декодер DataMatrix кодов. Просьба сообщать об ошибках.
http://intelligenthelper.com/online/dmreader/

Сервис перенесен по адресу: http://intbusoft.com/online/dmreader/

Распознавание образов с использованием OpenCV

Структурированные материалы блога (только по вопросам OpenCV) в одном файле:
Скачать 2520 KB

С Новым годом!

  • 0
  • 30 декабря 2011, 19:05
  • vidikon
  • 1

Преобразование Фурье в OpenCV

Не буду вдаваться в подробности про то, что такое преобразование Фурье, БПФ, и зачем это нужно. В конце концов, есть Google, Википедия и множество источников, где можно почитать теорию. Напомню только, что данное преобразование позволяет получить спектр сигнала, ну или в обратном случае из спектра – сам сигнал. Преобразование реализуется функцией.
void cvDFT(
const CvArr* src, 
CvArr* dst, 
int flags, 
int nonzeroRows=0
);



( Читать дальше )

Бинаризация описанная в работе "Edge Assisted Fast Binarization Scheme for Improved Vehicle License Plate Recognition"

Edge Assisted Fast Binarization Scheme for Improved Vehicle License Plate Recognition
M Satish, Lajish V L and Sunil Kumar Kopparapu
TCS Innovation Labs — Mumbai
Tata Consultancy Services Ltd., Yantra Park, Thane (West), Maharashtra 400 601, India

Предлагается быстрый адаптивный порог бинаризации при распознавании автомобильных номеров. Авторами предлагается новый метод, основанный на анализе краев. Метод сравнивается с локальным и глобальным методами Отсу.
Суть метода.
Пусть изображение состоит из пикселей переднего плана (G1) и пикселей заднего плана (G2) и G1>G2 (на самом деле не суть важно, что больше). Обычно выбирают порог G1≥GT≥G2, поскольку переход не резок, а плавный.


( Читать дальше )

FREE DataMatrix Online Generator

Заработал в тестовой версии онлайн генератор DataMatrix кодов. Просьба сообщать об ошибках.
http://intelligenthelper.com/online/datamatrix/

Онлайн сервис перенесен по адресу: http://intbusoft.com/online/datamatrix/

Отличия от фона OpenCV

В OpenCV 2.2 есть отличный пример, демонстрирующий детектирование отличий от фона bgfg_segm. Листинг функции main представен ниже.
int main(int argc, char** argv)
{
    IplImage*       tmp_frame = NULL;
    CvCapture*      cap = NULL;
    bool update_bg_model = true;

    if( argc < 2 )
        cap = cvCaptureFromCAM(0);
    else
        cap = cvCaptureFromFile(argv[1]);
    help();
    
    if( !cap )
    {
        printf("can not open camera or video file\n");
        return -1;
    }
   


( Читать дальше )

Структура системы распознавания образов реального времени

Выбор структуры обусловлен классом системы распознавания образов (СРО) реального времени (РВ). Если предполагается строить гибкую систему РВ без обратной связи, то достаточно использовать один программный процесс и один поток, в котором в цикле будут формироваться данные (например, с видеокамеры) и передаваться на процедуру распознавания. Однако такой подход не исключает ситуации, когда программа зависнет или аварийно завершится, что неприемлемо в полностью автоматизированных системах.
В работе [1] была предложена структурная схема программной СРО РВ. Система должна состоять из отдельных модулей, каждый из которых может быть оформлен в виде процессов, потоков или библиотечных функций.
Программные системы РВ реализуются на соответствующих операционных системах, например, QNX Neutrino, Windows CE, или на обычных операционных системах (Windows, Linux) с расширениями РВ. Особенностью подобных операционных систем является поддержка вытеснения потоков, что позволяет полностью вытеснять потоки с меньшим приоритетом при поступлении более важных потоков. Наиболее высшим приоритетом должен обладать модуль контроля, поскольку он обладает правом принудительно завершать работу модулей распознавания. В качестве примера построения структуры была разработана программная имитационная модель, работающая на обычной версии Windows XP. Поскольку наиболее подвержены ошибкам и зависаниям модули распознавания, то они реализовывались в виде отдельных процессов, а модули управления, контроля и сбора и обработки данных – в виде отдельных потоков главного процесса модели (для удобства обмена данными внутри одного адресного пространства). Для взаимодействия потоков и процессов использовались мьютексы, являющиеся наиболее простым и эффективным механизмом синхронизации.


( Читать дальше )