cvFlip

cvFlip【cvFlip】cvFlip是直接将图像採集卡採集的图像cvShowImage出来的是反着的图像,也就是图像採集卡採集的图像是以左下角为原点的,而视窗显示的图像原点是左上角,相当于是关于X轴翻转了 。在显示图像之前使用cvFlip()函式将图像翻转一下就可以了 。
基本介绍中文名:cvFlip
类别:程式语言
用处:图像採集卡採集的图像
特点:反着的图像
用法Flip垂直,水平或即垂直又水平翻转二维数组void cvFlip( const CvArr* src, CvArr* dst=NULL, int flip_mode=0);#define cvMirror cvFlipsrc原数组.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(i,cols(src1)-j-1),if flip_mode = 0dst(i,j)=src(rows(src)-i-1,j),if flip_mode > 0dst(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)下面是关于这个函式的介绍以及简单的测试小程式 。#include "stdafx.h"#include "stdio.h"#include "cv.h"#include "highgui.h"int main(){IplImage *pSrcImg = NULL;IplImage *pClnImg = NULL;pSrcImg = cvLoadImage("flower.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,0); //核心在这里 //不是cvFlip(src,pClnImg, 0);//pClinlmg必须先载入图像,或者複製图像!cvNamedWindow("src", 0);cvNamedWindow("turnover",0);cvShowImage("src", pSrcImg);cvShowImage("turnover", pClnImg);cvWaitKey(0);cvReleaseImage(&pSrcImg);cvReleaseImage(&pClnImg);cvDestroyWindow("src");cvDestroyWindow("turnover");return 0;}因为从AVI采出来的图像有些是Windows点阵图一样是底左格式,即图像像素开始与左下角,这样图像看起来是倒着的,需要进行垂直反转 。翻转的判断可以用IplImage::origin参数得知,origin为1即是翻转图 。使用函式cvFlip进行翻转 。改出方法在"//显示图像" 后面增加下面两句pFrImg->origin=1;pBkImg->origin=1;