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

标签 c++ opencv memory-leaks

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

cv::Mat 数据;//具有整数值的数据矩阵,维度为 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();

关于c++ - opencv 函数 transpose() 给出错误结果,内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26135650/

相关文章:

android - 仅当应用程序通过 Eclipse-Android 连接时才加载 Open CV

iPhone - CGBitmapContextCreateImage 泄漏,还有其他人遇到这个问题吗?

android - 在 Android 的 Mono 屏幕旋转后设置图像时出现内存错误

c++ - 如何将鼠标/光标添加到非触摸手机的 QML 应用程序?

visual-studio-2010 - 如何使用 opencv 创建 cvSobel 函数

python - 在 Pandas 库中转换Image数组以用于PCA

ios - App加载viewcontroller后运行缓慢,然后卸载大约15-20次

c++ - operator++()和operator++(int)有什么区别?

c++ - 我的 C++ DLL 返回来自 2 个顺序调用的混合数据

c++ - 将 OLECHAR* 转换为 CHAR* 以构建 string()