1. Создание распознавалки как класса с созданием внутри всех необходимых структур данных;
- Код: Выделить всё • Развернуть
- #include "AssociativeMemory.h"
 CvAssociativeMemory32S* pAM = new CvAssociativeMemory32S;
 ...
 if(mpAM) { delete mpAM; }
2. Сохранение всей внутренней структуры в файл, загрузка из файла.
Заголовочный файл: "AssociativeMemory.h"
- Код: Выделить всё • Развернуть
- // Saving of recognition data
 bool Save(char* aFileName, bool aSaveWithoutOptimization = false);
 // Loading of recognition data
 bool Load(char* aFileName);
3. Добавление образа для распознавания.
- Код: Выделить всё • Развернуть
- // Set an image for processing
 void SetImage(const void* apSrcImg, const void* apObjMaskImg = NULL);
 // Writing to associative memory cell
 void Write(CvRect aInterestArea, long* apData, bool aDeepLearning = true);
4. Распознавание всех образов, которые знаем, на заданном изображении.
- Код: Выделить всё • Развернуть
- // Set an image for processing
 void SetImage(const void* apSrcImg, const void* apObjMaskImg = NULL);
 // Object recognition
 void ObjectRecognition(CvRcgAMFunc32S RcgAMFunc, void *args = NULL);
 void ObjectTracking(CvRcgAMFunc32S RcgAMFunc, void *args = NULL,
 bool aTrainingDuringTracking = true,
 double aSimilarityUpTrd = cAM_SimilarityUpTrd,
 double aSimilarityDnTrd = cAM_SimilarityDnTrd);
5. Распознавание 1 вида образов, который знаем, на заданном изображении.
- Код: Выделить всё • Развернуть
- // Definition of associative memory operation function
 typedef bool (*TYPE_AMFunc32S)(CvSize aRcgMxSize, short* apRcgMx, long* apData,
 uint64 aIndex, uint64 aHitCounter,
 int aContainBasesTotal, short aLevel, void* args);
Можно просмотреть все распознанные объекты в функции call-back (RcgAMFunc) и выбрать только те объекты, у которых необходимый нам индекс объекта (long* apData).
6. Удаление образа из распознаваемых.
Такого пока что нету. У каждого ассоциативного ядра есть свой уникальный индекс (uint64 aIndex), так что несложно будет сделать удаление ядра с заданным индексом.
Итог: необходимо добавить один метод DeleteAssociativeBase(uint64 aIndex) в класс CvAssociativeMemory32S.





 save/load(char* fileName), поправил выше.
 save/load(char* fileName), поправил выше.