How to appropriately destroy mxArray created by ocvMxArrayFromImage_{DataType} functions
Afficher commentaires plus anciens
Dear all, I am trying to integrate Matlab code into C++ program with OpenCV. I found the program will gradually increase memory usage.
After some working around, I believe the problem has something to do with destroying mxArray. I wrote a simple test program with an infinite loop that keeps create mxArray and destroy it, as shown below
cv::Mat imageMat = cv::imread(imagePath);
while(true)
{
mxArray* imageMXA = ocvMxArrayFromImage_uint8(imageMat);
mxDestroyArray(imageMXA);
}
this program will gradually increase memory usage.
However, another test program that creates mxArray with mxCreateNumericArray does not have such problem. the code is shown below
while(true)
{
mxArray* imageMXA = mxCreateNumericArray(dimensionNumber, dimensions, mxDOUBLE_CLASS, mxREAL);
mxDestroyArray(imageMXA);
}
It seems that there is something wrong in the code that destroy the mxArray created by ocvMxArrayFromImage_{DataType} functions. My question is, how should I appropriately destroy such mxArray?
7 commentaires
James Tursa
le 28 Mar 2018
Modifié(e) : James Tursa
le 28 Mar 2018
You would probably need to see the code for ocvMxArrayFromImage_uint8 to answer your question, and you don't have that. However, it looks like it is a simple nD transpose and reordering operation, so it wouldn't be too difficult to write your own conversion routine if needed.
Eddie Chiou
le 29 Mar 2018
Modifié(e) : Eddie Chiou
le 29 Mar 2018
Eddie Chiou
le 29 Mar 2018
James Tursa
le 29 Mar 2018
I can't offer any advice unless I see your code.
Eddie Chiou
le 29 Mar 2018
James Tursa
le 29 Mar 2018
Is channels always either going to be 1 or 3?
Eddie Chiou
le 29 Mar 2018
Réponses (0)
Catégories
En savoir plus sur OpenCV Support dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!