Можно ли установить собственный распределитель для OpenCV 2.3.1? У меня создан пул памяти, и я хочу, чтобы OpenCV использовал этот пул для того, что ему нужно.
Это возможно? Если да, то как это можно сделать?
Обновлено:
Я сделал некоторые изменения с момента последнего ответа, но у меня все еще есть некоторые проблемы. Это код, который у меня есть сейчас:
CvAllocFunc allocCV()
{
return (CvAllocFunc) MEMPOOL->POOLalloc(sz);
}
CvFreeFunc deallocCV()
{
return (CvFreeFunc) MEMPOOL->POOLfree(ptr);
}
...
cvSetMemoryManager(allocCV(),deallocCV(),data);
Теперь мой вопрос: как я могу получить доступ к размеру и указателю на данные, которые я хочу выделить, а затем освободить?
Только что узнал: версия OpenCV, которую я использую (2.3.1), выдает ошибку при использовании cvSetMemoryManager. Причина в его исходном коде:
void cvSetMemoryManager( CvAllocFunc, CvFreeFunc, void * )
{
CV_Error( -1, "Custom memory allocator is not supported" );
}
Я был очень разочарован этим. Думаю, я больше не могу использовать собственный пул памяти с OpenCV!