- #include <cv.h>
- #include <highgui.h>
- #include <cxcore.h>
- #include <stdio.h>
-
- int main(int argc, char* argv[])
- {
- IplImage *pSrcImg = NULL;
- IplImage *pClnImg = NULL;
-
- pSrcImg = cvLoadImage("F:\\OpenCV\\test images\\fruits.jpg", 1);
- if (pSrcImg == NULL)
- {
- printf("Fail to load images\n");
- return -1;
- }
-
- pClnImg = cvCloneImage(pSrcImg);
- if (pClnImg == NULL)
- {
- printf("Fail to clone the image\n");
- return -1;
- }
-
- cvFlip(pClnImg, NULL, 1);
-
- cvNamedWindow("src", 1);
- cvNamedWindow("turnover", 1);
- cvShowImage("src", pSrcImg);
- cvShowImage("turnover", pClnImg);
- cvWaitKey(0);
- cvReleaseImage(&pSrcImg);
- cvReleaseImage(&pClnImg);
- cvDestroyWindow("src");
- cvDestroyWindow("turnover");
-
- return 0;
- }
Flip函数原型声明为void cvFlip( const CvArr* src, CvArr* dst=NULL, int flip_mode=0);
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)
水平和垂直同时转换,用于连续的水平转换和绝对真理值差检查中心对称s(flip_mode < 0)
翻转1维指针数组的顺序(flip_mode > 0)
(落鹤生) |