功能描述
flip()函数翻转一个二维的矩阵,包含垂直翻转,水平翻转,以及垂直水平翻转,
函数 cv::flip 以以下三种方式之一翻转矩阵(行和列索引从0开始):
函数使用示例方案如下:
-
flipCode =0,垂直翻转图像,是源图像的top-left(左上)和bottom-left(左下)的交换,也就是说左上变成了左下,左下变成了左上,这是一个典型在的 Microsoft Windows操作系统里的视频处理操作。
-
flipCode > 0,图像的水平翻转,随后的水平位移和绝对方差计算,是为了检查图像是否y轴对称。
-
(flipCode < 0),图像同时垂直翻转和水平翻转,是为了以后的位移和绝对方差计算去检查图像是否是中心对称。
-
反转点阵队列的顺序(flipCode > 0 或flipCode == 0).
原型
CV_EXPORTS_W void flip(InputArray src, OutputArray dst, int flipCode);
参数释义
-
参数 src 输入矩阵.
-
参数 dst 输出矩阵,和输入矩阵一样大小。
-
参数 flipCode 一个标志,决定怎么翻转矩阵; 0 是围绕着x轴翻转,正直是围绕着y轴翻转,负值是围绕着两个轴一起翻转。 around both axes.
-
参考 transpose , repeat , completeSymm
源码示例
#include <iostream>
#include <opencv2/opencv.hpp>
int main()
{
cv::Mat image = cv::imread("D:\\OpenCVtest\\images\\juice.png");
cv::Mat image_fliped;
cv::flip(image, image_fliped, 0);
cv::imshow("原图 juice", image);
cv::imshow("垂直翻转 围绕x轴 juice", image_fliped);
cv::flip(image, image_fliped, 1);
cv::imshow("水平翻转 围绕Y轴 juice", image_fliped);
cv::flip(image, image_fliped, -1);
cv::imshow("水平翻转、垂直翻转同时 围绕X、Y轴 juice", image_fliped);
cv::waitKey(0);
return 0;
}
运行结果
垂直翻转 围绕x轴:
水平翻转 围绕Y轴
水平翻转、垂直翻转同时 围绕X、Y轴