openCV mixando IplImage com cv :: Mat

Eu experimentei algumas ambigüidades de gerenciamento de memória com opencv. Você poderia fazer isso com as novas classes opencv c ++:

cv::Mat theimage = cvLoadImage("rawimage.pgm",CV_LOAD_IMAGE_ANYDEPTH);

agora o que eu não entendo se eu fizer o seguinte eu vou receber um erro:

theimage.deallocate();

talvez isso esteja errado. Eu fiz algumas experiências e quando eu libero o objeto Mat:

theimage.release();

o objeto IplImage ainda permanece na memória. Existe alguma maneira de dizer para o objeto cv :: Mat destruir o objeto IplImage ou é minha primeira linha de código errado (desde que eu perdi o ponteiro para o objeto IplImage)? Eu vi muitos exemplos na internet onde as pessoas usam a primeira linha de código. Muitos explica como converter, mas ninguém explica o que acontece com a memória!

O problema é que eu tenho muitas classes que estão usando o objeto IplImage (eu comecei meu projeto usando isso). E eu entendo porque o cv :: Mat é melhor que o IplImage.

--EDITAR--

Na internet eu encontrei seguindo solução para a mixagem:

cv::Ptr<IplImage> tmp = cvLoadImage("rawimage.pgm",CV_LOAD_IMAGE_ANYDEPTH);
cv::Mat theimage(tmp);

Eu acho que isso poderia resolver alguns dos meus problemas, mas torna meu código um pouco ilegível e é, na minha opinião, perigoso. Se tmp for desalocado antes de cv :: Mat, eu usarei alguns objetos corrompidos (não testei isso, mas acho que é assim). O caminho mais fácil seria usar uma cópia:

cv::Mat theimage(tmp,true);

esta é a única solução que eu encontrei, mas para mim parece errado ...

questionAnswers(1)

yourAnswerToTheQuestion