convertto - opencv mat type
convertir la matriz del tipo CV_32FC1 a CV_64FC1 (1)
¿Cómo convierto un cv :: Mat del tipo CV_32FC1 al tipo CV_64FC1 (equivalente a un cambio de float a double)?
Estoy abriendo una Matriz que se guardó como XML ( cvSave
) pero como un float. Esto significa que el campo <dt>
tiene el valor f
en el archivo. Necesito cambiarlo a d
para abrirlo. Pero prefiero no hacer esto, en cambio me gustaría abrirlo directamente como una matriz con elementos de tipo double, o convertirlo más tarde de float a double.
A continuación está mi código para abrir el archivo.
/** 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;
}
De acuerdo, soy un imbécil. Aquí es cómo va:
Existe la función convertTo que hace exactamente lo que quiero.
Gracias por la conversión de tipo de matriz en opencv para señalar esto.
Así es como lo hago:
cv::Mat A = loadMat("mymat.xml"); // See function loadMat in the question!
A.convertTo(A, CV_64F);