我有一个整数数据类型的矩阵,其尺寸为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);
我认为这可能是内存泄漏或任何内存管理不善的问题。因为这只是大代码的一部分。关于内存管理或其他任何人遇到此问题的任何提示??
答案 0 :(得分:8)
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();