Flip
垂直,水平或即垂直又水平翻转二维数组
void cvFlip( const CvArr* src, CvArr* dst=NULL, int flip_mode=0);
#define cvMirror cvFlip
src
原数组.
dst
目标责任制数组. 如果 dst = NULL 翻转是在内部替换.
flip_mode
指定怎样去翻转数组。
flip_mode = 0 沿X-轴翻转, flip_mode > 0 (如 1) 沿Y-轴翻转, flip_mode < 0 (如 -1) 沿X-轴和Y-轴翻转.见下面的公式
函数cvFlip 以三种方式之一翻转数组 (行和列下标是以0为基点的):
dst(i,j)=src(rows(src)-i-1,j) if flip_mode = 0
dst(i,j)=src(i,cols(src1)-j-1) if flip_mode > 0
dst(i,j)=src(rows(src)-i-1,cols(src)-j-1) if flip_mode < 0
函数主要使用在:
垂直翻转图像(flip_mode > 0)用于 顶-左和底-左图像结构的转换, 主要用于WIN32系统下的视频操作处理.
flip_mode= 0时,图像只会绕X轴旋转
flip_mode> 0时,图像只会绕Y轴旋转
结果图:
结果图:
结果图:
垂直,水平或即垂直又水平翻转二维数组
void cvFlip( const CvArr* src, CvArr* dst=NULL, int flip_mode=0);
#define cvMirror cvFlip
src
原数组.
dst
目标责任制数组. 如果 dst = NULL 翻转是在内部替换.
flip_mode
指定怎样去翻转数组。
flip_mode = 0 沿X-轴翻转, flip_mode > 0 (如 1) 沿Y-轴翻转, flip_mode < 0 (如 -1) 沿X-轴和Y-轴翻转.见下面的公式
函数cvFlip 以三种方式之一翻转数组 (行和列下标是以0为基点的):
dst(i,j)=src(rows(src)-i-1,j) if flip_mode = 0
dst(i,j)=src(i,cols(src1)-j-1) if flip_mode > 0
dst(i,j)=src(rows(src)-i-1,cols(src)-j-1) if flip_mode < 0
函数主要使用在:
垂直翻转图像(flip_mode > 0)用于 顶-左和底-左图像结构的转换, 主要用于WIN32系统下的视频操作处理.
flip_mode= 0时,图像只会绕X轴旋转
flip_mode> 0时,图像只会绕Y轴旋转
flip_mode<0时, 图像会绕X轴和Y轴旋转
一:
flip_code= 0 图像只会绕X轴旋转 |
// cvFlip的使用.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "opencv2/opencv.hpp"
int _tmain(int argc, _TCHAR* argv[])
{
//创建窗口
cvNamedWindow("src");
cvNamedWindow("dst");
// 定义src、dst
IplImage* src;
IplImage* dst;
//加载图片
src= cvLoadImage("F://Opencv_picture//a.jpg");
//创建dst
dst= cvCreateImage(cvGetSize(src), src->depth, src->nChannels);
//定义flip_code和赋值
int flip_code= 0;
//使用cvFlip
cvFlip(src, dst, flip_code);
//显示图像
cvShowImage("src", src);
cvShowImage("dst", dst);
cvWaitKey(0);
cvReleaseImage(&src);
cvDestroyWindow("src");
return 0;
}
结果图:
二:flip_mode> 0时,图像只会绕Y轴旋转
假设flip_code=1;
假设flip_code=1;
// cvFlip的使用.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "opencv2/opencv.hpp"
int _tmain(int argc, _TCHAR* argv[])
{
//创建窗口
cvNamedWindow("src");
cvNamedWindow("dst");
// 定义src、dst
IplImage* src;
IplImage* dst;
//加载图片
src= cvLoadImage("F://Opencv_picture//a.jpg");
//创建dst
dst= cvCreateImage(cvGetSize(src), src->depth, src->nChannels);
//定义flip_code和赋值
int flip_code= 1;
//使用cvFlip
cvFlip(src, dst, flip_code);
//显示图像
cvShowImage("src", src);
cvShowImage("dst", dst);
cvWaitKey(0);
cvReleaseImage(&src);
cvDestroyWindow("src");
return 0;
}
结果图:
三:flip_mode<0时, 图像会绕X轴和Y轴旋转
假设flip_code= -1时
假设flip_code= -1时
// cvFlip的使用.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "opencv2/opencv.hpp"
int _tmain(int argc, _TCHAR* argv[])
{
//创建窗口
cvNamedWindow("src");
cvNamedWindow("dst");
// 定义src、dst
IplImage* src;
IplImage* dst;
//加载图片
src= cvLoadImage("F://Opencv_picture//a.jpg");
//创建dst
dst= cvCreateImage(cvGetSize(src), src->depth, src->nChannels);
//定义flip_code和赋值
int flip_code= -1;
//使用cvFlip
cvFlip(src, dst, flip_code);
//显示图像
cvShowImage("src", src);
cvShowImage("dst", dst);
cvWaitKey(0);
cvReleaseImage(&src);
cvDestroyWindow("src");
return 0;
}
结果图: