在opencv中创建4x4矩阵时出错

问题描述 投票:0回答:1

我正在尝试使用cv::Mat(4,4,CV_64F, data_m);创建4x4矩阵,其中data_m是浮点数组

float data_m[] = {rmatrix.at<float>(0,0),rmatrix.at<float>(0,1), rmatrix.at<float>(0,2), tvec[0],rmatrix.at<float>(1,0), rmatrix.at<float>(1,1), rmatrix.at<float>(1,2), tvec[1], rmatrix.at<float>(2,0), rmatrix.at<float>(2,1), rmatrix.at<float>(2,2), tvec[2],0.f ,0.f ,0.f, 1.f};    

并且rmatrix是3x3矩阵,tvec是3x1向量。

但是,初始化translation_m时>]

cv::Mat translation_m = cv::Mat(4,4,CV_64F, data_m);

最后八个元素未在translation_m矩阵中成功初始化。它返回一些奇怪的外来数字,例如4.59121e-41

有人对这里发生的事情有见识吗?

我正在尝试使用cv :: Mat(4,4,CV_64F,data_m);创建一个4x4矩阵,其中data_m是一个浮点数组float data_m [] = {rmatrix.at (0,0),rmatrix .at (0,1),rmatrix.at

c++ opencv matrix mat
1个回答
0
投票

您正在混合double(64位,CV_64)和float(32位,CV_32F)。当将float数组读取为两倍时,您将在向量的结尾之后继续读取,并且您正在读取未初始化的数据。

使用任一:

© www.soinside.com 2019 - 2024. All rights reserved.