opencv图像翻转
时间: 2025-05-27 07:52:21 浏览: 14
### OpenCV实现图像翻转
OpenCV 提供了一个名为 `cv::flip()` 的函数,用于执行图像的水平、垂直或同时水平垂直翻转操作。以下是关于此功能的具体说明以及代码示例。
#### 函数参数解释
`void cv::flip(InputArray src, OutputArray dst, int flipCode)`
- **src**: 输入图像,支持单通道或多通道图像。
- **dst**: 输出图像,存储翻转后的结果,其大小和类型与输入图像相同。
- **flipCode**: 翻转模式,指定翻转方向:
- `0`: 沿 x 轴翻转(垂直翻转)[^1]。
- `1`: 沿 y 轴翻转(水平翻转)[^2]。
- `-1`: 同时沿 x 和 y 轴翻转(等效于旋转 180°)[^3]。
#### C++ 示例代码
以下是一个完整的 C++ 示例,展示如何使用 `cv::flip()` 进行不同类型的图像翻转:
```cpp
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main(int argc, char* argv[]) {
Mat msrc = imread("example.jpg");
if (msrc.empty()) {
cout << "读取图像失败!" << endl;
return -1;
}
imshow("原图像", msrc);
Mat dstx, dsty, dstxy;
// 垂直翻转
flip(msrc, dstx, 0);
imshow("垂直上下翻转", dstx);
// 水平翻转
flip(msrc, dsty, 1);
imshow("水平左右翻转", dsty);
// 水平垂直翻转
flip(msrc, dstxy, -1);
imshow("水平垂直翻转", dstxy);
waitKey(0);
destroyAllWindows();
return 0;
}
```
#### Python 示例代码
对于 Python 用户,同样可以通过 OpenCV 库中的 `cv2.flip()` 方法完成相同的任务。下面是一段 Python 实现代码:
```python
import cv2
path = 'example.jpg'
img = cv2.imread(path)
if img is None:
print("无法加载图像")
else:
cv2.imshow('原始图像', img)
# 左右翻转
img_flip_lr = cv2.flip(img, 1)
cv2.imshow('左右翻转', img_flip_lr)
# 上下翻转
img_flip_ud = cv2.flip(img, 0)
cv2.imshow('上下翻转', img_flip_ud)
# 水平垂直翻转
img_flip_both = cv2.flip(img, -1)
cv2.imshow('水平垂直翻转', img_flip_both)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
以上两段代码分别展示了在 C++ 和 Python 中如何利用 OpenCV 完成图像的不同翻转方式[^4]。
---
### 注意事项
- 如果需要处理视频流中的帧数据,也可以通过循环调用 `cv::flip()` 对每一帧进行翻转操作[^5]。
- 在实际应用中,请确保目标设备上的坐标系一致,特别是在涉及硬件摄像头捕捉场景时需要注意原点位置差异带来的影响。
阅读全文
相关推荐


















