Этот код отлично работает до последней строки. Он сохраняет правильное изображение на диске, но при выходе из функции происходит «утечка памяти» - повреждение кучи. Я читал, что Mat не должен быть явно выпущен. В моем случае он сбрасывается как с выпуском, так и без освобождения. Пожалуйста помоги.ошибка повреждения кучи; не удалось выпустить 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();
}
как вы обнаруживаете кучевое повреждение, какую программу вы используете для этого? просто интересно ... – penelope
Это показывает утечку памяти, или это сбой? – juanchopanza
Я работаю над визуальной студией 2008. Код выходит из строя при выходе из функции. – user1412066