将CV_32FC1类型的Matrix转换为CV_64FC1

时间:2011-08-02 10:03:33

标签: opencv matrix double

如何将CV_32FC1类型的cv :: Mat转换为CV_64FC1类型(相当于从float更改为double)?

我正在打开一个保存为XML(cvSave)的Matrix,但是作为一个浮点数。这意味着字段<dt>在文件中的值为f。我需要将其更改为d才能打开它。但是我宁愿不这样做,而是我想直接打开它作为带有double类型元素的Matrix,或者稍后将它从float转换为double。

以下是我打开文件的代码。

/** Load cv::Mat from XML file. 
 */
cv::Mat loadMat(const std::string filename)
{
    cv::Mat result;
    cv::FileStorage fs(filename, cv::FileStorage::READ);
    fs.getFirstTopLevelNode() >> result;
    return result;
}

1 个答案:

答案 0 :(得分:64)

好吧,我是个傻瓜。这是怎么回事:

有一个函数convertTo完全符合我的要求。

感谢matrix type conversion in opencv指出这一点。

我是这样做的:

cv::Mat A = loadMat("mymat.xml"); // See function loadMat in the question!
A.convertTo(A, CV_64F);