opencv函数transpose()给出错误结果,内存泄漏

opencv function transpose() giving false results, memory leak?

本文关键字:结果 错误 内存 泄漏 出错 函数 transpose opencv      更新时间:2023-10-16

我有一个维度为100 x 7000的整数数据类型矩阵。我想转置它。我使用了opencv库中的transpose()函数。但它给出了错误的结果。大多数值变为浮点数,并且非常高,这些值在原始矩阵中不存在。这是我的代码

cv::Mat data; //data matrix with integer values, dimension is 100 x 7000 cv::Mat data_tp = cv::Mat(data.cols, data.rows, CV_32F); cv::transpose(data, data_tp);

我认为这可能是内存泄漏或任何内存管理不善的问题。因为这只是一个大代码的一部分。关于内存管理或其他人面临这个问题,有什么建议吗??

cv::Mat data; //data matrix with integer values, dimension is 100 x 7000
// here are 2 problems:
// - you never need to pre-allocate the result.
// - you try to transpose an int Mat into a float one.
cv::Mat data_tp =  cv::Mat(data.cols, data.rows, CV_32F); 
cv::transpose(data, data_tp);

// instead, just use:
cv::Mat data_tp = data.t();