web-dev-qa-db-ja.com

タイプCV_32FC1のマトリックスをCV_64FC1に変換します

CV_32FC1型のcv :: MatをCV_64FC1型に変換するにはどうすればよいですか(floatからdoubleへの変更に相当)?

XML(cvSave)として保存されたが、フロートとして保存されたマトリックスを開いています。これは、フィールド<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;
}
37
Unapiedra

さて、私は薄暗いです。方法は次のとおりです。

私が望んでいることを正確に行う関数convertToがあります。

opencvでのマトリックス型変換 に感謝します。

ここに私がそれをする方法があります:

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