---
title: remap
description: "remap函数用于对图像进行重映射，可以实现对图像的任意几何变换，如旋转、缩放、扭曲等。通过指定源图像的像素在目标图像中的位置，remap函数可以生成变换后的图像，广泛应用于图像校正和立体视觉等领域。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/251RC1/accel/kunpengaccel_kpcv_06_0012.html
sourcePath: /source/zh/kunpengboostkithistory/251RC1/accel/kunpengaccel_kpcv_06_0012.html
indexId: 57d8039ed9987e90c4d904b84bca61349fad1a3448fe053b310ea608e1da9bdd77
---
# remap

#### 函数功能

remap函数用于对图像进行重映射，可以实现对图像的任意几何变换，如旋转、缩放、扭曲等。通过指定源图像的像素在目标图像中的位置，remap函数可以生成变换后的图像，广泛应用于图像校正和立体视觉等领域。


#### 函数接口

```
cv2.remap(src, map1, map2, interpolation=cv2.INTER_LINEAR, dst=None, borderMode=cv2.BORDER_CONSTANT, borderValue=None)
```


#### 参数

| 参数名 | 描述 | 取值范围 | 输入/输出 |
| --- | --- | --- | --- |
| src | 输入图像。 | 非空 | 输入 |
| map1 | map1是二维数组，指定每个像素在源图像中的x坐标（或像素映射矩阵的第一部分）。 | map1的值应该是[0, width\-1]之间的32位浮点数，其中width是src图像的宽度 | 输入 |
| map2 | map2是二维数组，指定每个像素在源图像中的y坐标（或像素映射矩阵的第二部分）。 | map2的值应该是[0, height\-1]之间的32位浮点数，其中height是src图像的高度 | 输入 |
| interpolation | 插值方法，默认值为cv2.INTER\_LINEAR，可选择cv2.INTER\_NEAREST、cv2.INTER\_CUBIC等。 | cv2.INTER\_LINEAR、cv2.INTER\_NEAREST、cv2.INTER\_CUBIC等 | 输入 |
| dst | 输出图像，可选，默认会创建新图像。 | 非空 | 输出 |
| borderMode | 边界模式，默认值为cv2.BORDER\_CONSTANT，决定如何处理源图像外的像素。 | 常见的取值包括：cv2.BORDER\_CONSTANT、 cv2.BORDER\_REPLICATE、cv2.BORDER\_REFLECT | 输入 |
| borderValue | 边界值，仅在borderMode为BORDER\_CONSTANT时有效。 | 单通道灰度图像，borderValue通常是一个整数值 多通道图像，borderValue是一个包含多个整数值的元组 | 输入 |


#### 返回值

- 输出图像。


#### 示例

```
import numpy as np
import cv2

# 创建一个5x5的简单图像 
src = np.array([[0, 0, 0, 0, 0],
               [0, 1, 1, 1, 0],
               [0, 1, 0, 1, 0],
               [0, 1, 1, 1, 0],
               [0, 0, 0, 0, 0]], dtype=np.uint8)  

# 创建一个映射矩阵，用于定义图像的重映射 
map_x = np.array([[0, 1, 2, 3, 4],
                 [0, 1, 2, 3, 4],
                 [0, 1, 2, 3, 4],
                 [0, 1, 2, 3, 4],
                 [0, 1, 2, 3, 4]], dtype=np.float32)  

map_y = np.array([[0, 0, 0, 0, 0],
                 [1, 1, 1, 1, 1],
                 [2, 2, 2, 2, 2],
                 [3, 3, 3, 3, 3],
                 [4, 4, 4, 4, 4]], dtype=np.float32)

dst = cv2.remap(src, map_x, map_y, cv2.INTER_LINEAR)

print(dst)
```

运行结果：

```
[[0 0 0 0 0]
 [0 1 1 1 0]
 [0 1 0 1 0]
 [0 1 1 1 0]
 [0 0 0 0 0]]
```
