了解opencv重映射参数

时间:2014-07-14 09:13:09

标签: c++ image opencv image-processing

opencv重映射功能应该将位置从1个位置映射到另一个位置。但是我无法弄清楚如何进行这些调用。

    Mat base1(Mat base) {
        std::vector<float> vec;
        for (int x = 0; x < base.cols; x++) {
            for (int y = 0; y < base.rows; y++) {
                vec.push_back(y * base.cols + x);
            }
        }
        return Mat(vec);
    }

    Mat base2(Mat base) {
        std::vector<float> vec;
        for (int x = 0; x < base.cols; x++) {
            for (int y = 0; y < base.rows; y++) {
                vec.push_back((y * base.cols + x+1)%(base.cols*base.rows+base.cols));
            }
        }
        return Mat(vec);
    }
 Mat remap(Mat input) {


    Mat r;
    remap(input, r, base1(input), base2(input),  0, BORDER_CONSTANT, Scalar());


return ret;
}

会导致图像向右移1像素?相反,它似乎陷入某种无限循环,程序不再响应任何东西。

再次查看文档,似乎每个两个数组都与x和y有某种关系,而不是源和目标。但是你如何使用2个数组呢,你不需要2d数组而不是2个数组吗?或者还有其他事情发生了吗?

0 个答案:

没有答案