我正在尝试使用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
您正在混合double
(64位,CV_64
)和float
(32位,CV_32F
)。当将float数组读取为两倍时,您将在向量的结尾之后继续读取,并且您正在读取未初始化的数据。
使用任一: