Làm cách nào để chuyển đổi cv :: Mat của loại CV_32FC1 thành loại CV_64FC1 (tương đương với thay đổi từ float sang gấp đôi)?chuyển đổi Ma trận loại CV_32FC1 thành CV_64FC1
Tôi đang mở một Ma trận đã được lưu dưới dạng XML (cvSave
) nhưng dưới dạng phao. Điều này có nghĩa là trường <dt>
có giá trị f
trong tệp. Tôi cần thay đổi nó thành d
để mở. Nhưng tôi không muốn làm điều này, thay vào đó tôi muốn mở nó trực tiếp như một Ma trận với các thành phần của kiểu double, hoặc chuyển đổi nó sau này từ float sang gấp đôi.
Dưới đây là mã của tôi để mở tệp.
/** 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;
}
Ngoài ra, nếu bạn đang chuyển đổi từ một cái gì đó giống như 16u để 8U, bạn cần phải thêm một yếu tố rộng như một tham số thứ ba. 'A.convertTo (A, CV_8UC1, 255.0/65536.0);' –