Questo codice funziona bene fino all'ultima riga. Salva l'immagine corretta sul disco ma mostra una "perdita di memoria" dopo l'uscita dalla funzione - danneggiamento dell'heap. Avevo letto che Mat non ha bisogno di essere rilasciato esplicitamente. Nel mio caso, si blocca sia con il rilascio che senza il rilascio. Per favore aiuto.errore di danneggiamento dell'heap; impossibile rilasciare cv :: Mat opencv
void CannyEdgeDetectionFilter::applyFilter(Mat& mat, Mat& mixedBandsMat)
{
//Mat mixedBandsMat;
vector<Mat> bandWiseImages;
split(mat, bandWiseImages);
//! Evaluate numChannels to be filtered in the input image
int numChannels = mat.channels();
int type = mat.type();
//! Multiplied by 8 to get bits from Bytes
int singleChannelDepth = 8*mat.elemSize1();
for (int i = 0; i < numChannels; i++)
{
Canny(bandWiseImages[i], bandWiseImages[i], m_LowerThreshold,
m_UpperThreshold, m_Kernel.rows);
}
//! Creating filteredImgMat in order to set DataValues
mixedBandsMat.create(mat.rows, mat.cols, mat.type());
//! Unifying the channels back to the output image
merge(bandWiseImages, mixedBandsMat);
#if 1
//Release bandWiseImages Mat memory
int bandWiseVecSize = bandWiseImages.size();
for(int i = 0; i < bandWiseVecSize; i++)
bandWiseImages[i].release();
bandWiseImages.clear();
//fromTo.clear();
#endif
imwrite("D:\\testAfterCannyEdgeDetetionFilter.jpg", mixedBandsMat);
mixedBandsMat.release();
}
come si rileva il danneggiamento dell'heap, quale programma si sta utilizzando per quello? mi stavo solo chiedendo ... – penelope
Mostra una perdita di memoria o si blocca? – juanchopanza
Sto lavorando su Visual Studio 2008. Il codice si arresta in modo anomalo all'uscita dalla funzione. – user1412066