Jak przekonwertować cv :: Mat typu CV_32FC1 na typ CV_64FC1 (odpowiednik zmiany z wartości zmiennoprzecinkowej na podwójną)?Konwersja macierzy typu CV_32FC1 na CV_64FC1
Otwieram macierz zapisaną jako XML (cvSave
), ale jako zmienną. Oznacza to, że pole <dt>
ma w pliku wartość f
. Muszę go zmienić na d
, aby go otworzyć. Ale wolałbym tego nie robić, zamiast tego chciałbym otworzyć go bezpośrednio jako Matrix z elementami typu double lub przekonwertować go później z float na double.
Poniżej znajduje się mój kod do otwierania pliku.
/** 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;
}
Ponadto, jeśli konwersja z czegoś podobnego do 8U 16U, trzeba dodać współczynnik skalowania jako trzeci parametr. 'A.convertTo (A, CV_8UC1, 255.0/65536.0);' –