cvConvertImage函数

函数原型是:

cvConvertImage( const CvArr* src, CvArr* dst, int flags CV_DEFAULT(0));

src是源图像的IplImage指针;源图像可以是单个,3个或者4个通道

dst是转换后的图像的IplImage指针;目标图像必须是8位的单通道或者3个通道

flags是转换的模式,可以取0:没有变化;1:垂直翻转,即沿x轴翻转;2:交换红蓝信道;

有时候摄像机图像格式与图像显示格式会反转,设置这个参数可以在内存中彻底旋转图像。

enum
{
    CV_CVTIMG_FLIP      =1,
    CV_CVTIMG_SWAP_RB   =2
};

该函数可以将彩色图像转换为灰度图或者将单通道的灰度图转换为3个通道的灰度图(彩色)。



下面以实验为例说明:

#include "stdafx.h"
#include <cv.h>
#include <highgui.h>

void main(void)
{
IplImage *img;
IplImage *dst;

img = cvLoadImage("Fruits.jpg",0);  //该处载入的源图像既是灰度图像,即单通道的

//img = cvLoadImage("Fruits.jpg",1);//载入彩色图像

dst=cvCreateImage( cvGetSize( img ), IPL_DEPTH_8U, 1);//创建的目标图像也是单通道的,必须是8位深度

//dst=cvCreateImage( cvGetSize( img ), IPL_DEPTH_8U, 1);//该处创建的目标图像也是单通道的,//深度必须是8位
//dst=cvCreateImage( cvGetSize( img ), IPL_DEPTH_8U, 3);//3通道图像
cvConvertImage(img,dst,CV_CVTIMG_FLIP);//将源图像沿x轴翻转即得到目标图像

cvNamedWindow("Imageshow",1);
cvShowImage("Imageshow",img);

cvNamedWindow("Converted",1);
cvShowImage("Converted",dst);

cvWaitKey(0);

}

下图是实验结果:


做修改,看注释部分,实验结果2



同理也可以实现3通道到3通道的图像翻转:

只需把dst=cvCreateImage( cvGetSize( img ), IPL_DEPTH_8U, 1)改为

dst=cvCreateImage( cvGetSize( img ), IPL_DEPTH_8U, 3);


若只想把图像进行翻转,可以使用函数cvFlip进行:函数原型为

 cvFlip( const CvArr* src, CvArr* dst CV_DEFAULT(NULL),int flip_mode CV_DEFAULT(0));

第三个参数表示翻转模式:

0:沿x轴翻转;1:沿y轴翻转;-1:沿x轴和y轴翻转。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值