c++remap参数
时间: 2023-11-24 12:51:06 浏览: 120
c++中的remap函数有五个参数,分别是:
1. InputArray src:输入图像,可以是单通道或多通道图像,数据类型可以是CV_8UC1、CV_8UC3、CV_16UC1、CV_16UC3、CV_32FC1、CV_32FC3等。
2. OutputArray dst:输出图像,与输入图像大小和类型相同。
3. InputArray map1:第一个映射表,可以是CV_16SC2、CV_32FC1、CV_32FC2类型的矩阵。
4. InputArray map2:第二个映射表,与map1类型相同。
5. int interpolation:插值方法,可以是INTER_NEAREST、INTER_LINEAR、INTER_CUBIC、INTER_LANCZOS4等。
其中,map1和map2的大小必须与输出图像dst的大小相同,表示每个像素在输入图像中的位置。如果map1和map2的类型为CV_16SC2,则表示每个像素在输入图像中的位置为(map1(x,y),map2(x,y)),其中x和y为输出图像中的像素坐标。如果map1和map2的类型为CV_32FC2,则表示每个像素在输入图像中的位置为(map1(x,y)+x,map2(x,y)+y)。
borderValue是可选参数,表示当映射后的像素位置超出输入图像范围时,使用的边界填充值,默认为Scalar(),即黑色填充。
以下是一个使用remap函数的例子:
```c++
Mat src = imread("input.jpg");
Mat dst;
Mat mapx(src.size(), CV_32FC1);
Mat mapy(src.size(), CV_32FC1);
for (int i = 0; i < src.rows; i++) {
for (int j = 0; j < src.cols; j++) {
mapx.at<float>(i, j) = j + 50;
mapy.at<float>(i, j) = i + 50;
}
}
remap(src, dst, mapx, mapy, INTER_LINEAR, BORDER_CONSTANT, Scalar(0, 0, 255));
imshow("output", dst);
waitKey(0);
```
阅读全文