学习OpenCV2——Mat之通道的理解

    本文详细介绍了opencv中涉及通道的知识,包括图像类型转换,通道合成分解,图像的显示。 

   

1. 知识点

tips1:  一个图像的通道数是N,就表明每个像素点处有N个数,一个a×b的N通道图像,其图像矩阵实际上是b行N×a列的数字矩阵。

OpenCV中图像的通道可以是1、2、3和4。其中常见的是1通道和3通道,2通道和4通道不常见。

      1通道的是灰度图。

      3通道的是彩色图像,比如RGB图像。

      4通道的图像是RGBA,是RGB加上一个A通道,也叫alpha通道,表示透明度。PNG图像是一种典型的4通道图像。alpha通道可以赋值0到1,或者0到255,表示透明到不透明。

      2通道的图像是RGB555和RGB565。2通道图在程序处理中会用到,如傅里叶变换,可能会用到,一个通道为实数,一个通道为虚数,主要是编程方便。RGB555是16位的,2个字节,5+6+5,第一字节的前5位是R,后三位+第二字节是G,第二字节后5位是B,可见对原图像进行压缩了。

     

tips2: OpenCV中用imshow( )来显示图像,只要Mat的数据矩阵符合图像的要求,就可以用imshow来显示。二通道好像不可以。。。超过了4通道,就不是图像了,imshow( )也显示不了。


tips3: imshow( )显示单通道图像时一定是灰度图,如果我们想显示红色的R分量,还是应该按三通道图像显示,只不过G和B通道要赋值成0或255.


tips4: 通道分解用split( ),通道合成用merg( ),这俩函数都是mixchannel( )的特例。


下面,结合程序说明以上知识点。


2 图像类型的转换与显示 

Mat image=imread("E:/图片/color.jpg");  
Mat imageGRAY,imageRGBA,imageRGB555;
cvtColor(image,imageGRAY,CV_RGB2GRAY);            //RGB转GRAY
cvtColor(image,imageRGBA,CV_RGB2BGRA);            //RGB转RGBA
cvtColor(image,imageRGB555,CV_RGB2BGR555);        //RGB转RGB555

//来看看通道数
int n = image.channels();                        //n=3
int nRGBA = imageRGBA.channels();                //nRGBA = 4
int nRGB555 = imageRGB555.channels();            //nRGB555 = 2

//显示GRAY、RGB和RGBA图像
imshow("image",image);
imshow("imageGRAY",imageGRAY);
imshow("imageRGBA",imageRGBA);
//imshow("imageRGB555",imageRGB555);             //无法
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值