cvRepeat(const CVArr *src, CVArr *dst)
功能把src通道式填充到dst中,具体我也不太会用,是关于指针的,经常无法达到我预期效果
下面是自己随便编写几个函数使用例子:
// cvRepeat.cpp : 定义控制台应用程序的入口点。
//
/*==============================================================
名称:cvRepeat
时间:2013.07.26
说明:cvRepeat、cvFlip、cvSlip等函数使用
===============================================================*/
#include "stdafx.h"
#include "cv.h"
#include "highgui.h"
#include "cxcore.h"
int _tmain(int argc, _TCHAR* argv[])
{
//声明一个图像指针,并初始化该指针
IplImage *src;
src = cvLoadImage("./2.jpg");
if(!src)
return -1;
//窗口创建与原图像显示
cvNamedWindow("src");
cvShowImage("src", src);
cvWaitKey(1000);
//--------------cvRepeat函数使用----------------------------//
//声明一个图像指针dst_repeat,大小为src的两倍,其他参数一样
IplImage *dst_repeat;
dst_repeat = cvCreateImage(cvSize(src->height*2, (int)(src->width*1.5)), IPL_DEPTH_8U, src->nChannels);
cvRepeat(src, dst_repeat);//输入数组管道式填充输出数组dst_repeat
//创建显示窗口与显示处理好图像
cvNamedWindow("dst_repeat");
cvShowImage("dst_repeat", dst_repeat);
cvWaitKey(1000);
//---------------cvFliph函数使用----------------------------//
IplImage *dst_flip = cvCreateImage(cvGetSize(src), src->depth, src->nChannels);//声明一个大小深度信道与src一样dst
//用来输出图像指针
cvFlip(src, dst_flip, 1); //图像镜像翻转
//显示窗口创建与图像显示
cvNamedWindow("dst_flip");
cvShowImage("dst_flip", dst_flip);
cvWaitKey(1000);
//---------------cvSliph函数使用----------------------------//
IplImage *dst1 = cvCreateImage(cvGetSize(src), src->depth, 1);//声明一个大小深度信道与src一样dst
//用来输出图像指针
IplImage *dst2 = cvCreateImage(cvGetSize(src), src->depth, 1);//声明一个大小深度信道与src一样dst
//用来输出图像指针
IplImage *dst3 = cvCreateImage(cvGetSize(src), src->depth, 1);//声明一个大小深度信道与src一样dst
//用来输出图像指针
cvSplit(src, dst1, dst2, dst3, NULL); //分为三个通道
//显示窗口创建与图像显示
cvNamedWindow("dst1");
cvShowImage("dst1", dst1);
cvWaitKey(1000);
//---------------cvMerge函数使用----------------------------//
IplImage *dst_merge = cvCreateImage(cvGetSize(src), src->depth, src->nChannels);//声明一个大小深度信道与src一样dst
//用来输出图像指针
cvMerge(dst3, dst2, dst1, NULL, dst_merge);
//显示窗口创建与图像显示
cvNamedWindow("dst_merge");
cvShowImage("dst_merge", dst_merge);
cvWaitKey(0);
//销毁所有窗口
cvDestroyAllWindows();
//释放所有内存
cvReleaseImage(&src);
cvReleaseImage(&dst1);
cvReleaseImage(&dst2);
cvReleaseImage(&dst3);
cvReleaseImage(&dst_flip);
cvReleaseImage(&dst_merge);
return 0;
}