---
title: warpAffine
description: "warpAffine函数用于对图像进行仿射变换。仿射变换是一种二维变换，可以包括旋转、缩放、平移和剪切。warpAffine函数根据提供的变换矩阵对图像进行操作，返回变换后的图像。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/251RC1/accel/kunpengaccel_kpcv_06_0036.html
sourcePath: /source/zh/kunpengboostkithistory/251RC1/accel/kunpengaccel_kpcv_06_0036.html
indexId: c2dc7d95c44813aa2d49f9eb64fd79d3f94ca4551f733ef5d6ce0af614fa616d77
---
# warpAffine

#### 函数功能

warpAffine函数用于对图像进行仿射变换。仿射变换是一种二维变换，可以包括旋转、缩放、平移和剪切。warpAffine函数根据提供的变换矩阵对图像进行操作，返回变换后的图像。


#### 函数接口

```
void warpAffine(InputArray src, OutputArray dst, InputArray M, Size dsize, int flags = INTER_LINEAR, int borderMode = BORDER_CONSTANT, const Scalar& borderValue = Scalar());
```


#### 参数

| 参数名 | 描述 | 取值范围 | 输入/输出 |
| --- | --- | --- | --- |
| src | 输入图像。 | 非空 | 输入 |
| dst | 输出图像。 | Mat类型 | 输出 |
| M | 仿射变换矩阵。 | size是2x3 | 输入 |
| dsize | 输出图像的尺寸。 | size(\-inf, inf) | 输入 |
| flags | 插值方法。 | INTER\_NEAREST、INTER\_LINEAR、INTER\_CUBIC、INTER\_LANCZOS4 | 输入 |
| borderMode | 边界模式，确定如何处理图像边界。 | BORDER\_CONSTANT、BORDER\_REPLICATE、BORDER\_REFLECT | 输入 |
| borderValue | 用于填充边界的常数值。 | (\-inf, inf) | 输入 |


#### 示例

```
#include <opencv2/opencv.hpp>
#include <iostream>

int main() {
    // 创建一个5x5的简单图像
    cv::Mat src = (cv::Mat_<uint8_t>(5, 5) << 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);

    // 定义仿射变换矩阵
    cv::Mat M = (cv::Mat_<float>(2, 3) << 1, 0, 1,
                                          0, 1, 1);

    // 应用仿射变换
    cv::Mat dst;
    cv::warpAffine(src, dst, M, cv::Size(5, 5), cv::INTER_LINEAR, cv::BORDER_CONSTANT, cv::Scalar(0));

    // 输出图像
    std::cout << std::endl << dst << std::endl;

    return 0;
}
```

运行结果：

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