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个数组吗?或者还有其他事情发生了吗?