如何将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;
}
答案 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);