2018年3月14日 星期三

OpenCV Mat 讀取數值錯誤,如何讀出正確數值

OpenCV Mat 讀取數值錯誤,如何讀出正確數值

在做仿射轉換的時候發現讀出來的數值都怪怪的,找了很久,後來才想到應該是要用 double,下面是讀取的範例。
    //選定幾何轉換前後相對的三個點
    Point2f srcTri[3];
    srcTri[0] = Point2f(0, 0);
    srcTri[1] = Point2f(10, 0);
    srcTri[2] = Point2f(0, 10);

    Point2f dstTri[3];
    dstTri[0] = Point2f(10, 10);
    dstTri[1] = Point2f(20, 10);
    dstTri[2] = Point2f(10, 20);

    Mat warp_mat = getAffineTransform(srcTri, dstTri);

    cout << warp_mat << endl;
    cout << "=========================" << endl;

    for(size_t j = 0; j < warp_mat.rows; j++) {
        for(size_t i = 0; i < warp_mat.cols; i++) {
            cout << warp_mat.at<float>(j, i) << ", "; // 錯誤
            //cout << warp_mat.at<double>(j, i) << ", "; // 正確
        } cout << endl;
    } cout << endl;

沒有留言:

張貼留言