图像通道、Scalar、分离、合成通道
http://lib.csdn.net/article/opencv/33264
- 图像通道
1.一个图像的通道数是N,就表明每个像素点处有N个数,一个a×b的N通道图像,本质上是三维数组,N表示第三个维度的个数,其图像矩阵实际上是N行a*b的数字矩阵。
OpenCV中图像的通道可以是1、2、3和4。其中常见的是1通道和3通道,2通道和4通道不常见。
1通道的是灰度图。
3通道的是彩色图像,比如RGB图像。
4通道的图像是RGBA,是RGB加上一个A通道,也叫alpha通道,表示透明度。PNG图像(便携式网络图形(Portable Network Graphics))是一种典型的4通道图像。alpha通道可以赋值0到1,或者0到255,表示透明到不透明,但是一般直接imshow()是看不出什么效果来的
2通道的图像是RGB555和RGB565。2通道图在程序处理中会用到,如傅里叶变换,可能会用到,一个通道为实数,一个通道为虚数,主要是编程方便。RGB555是16位的,2个字节,5+6+5,第一字节的前5位是R,后三位+第二字节是G,第二字节后5位是B,可见对原图像进行压缩了。
2.OpenCV中用imshow( )来显示图像,只要Mat的数据矩阵符合图像的要求,就可以用imshow来显示,超过了4通道,就不是图像了,imshow( )也显示不了。
3.imshow( )显示单通道图像时一定是灰度图,如果我们想显示红色的R分量,还是应该按三通道图像显示,只不过G和B通道要赋值成0或255.
4.通道分解用split( ),通道合成用merg( ),这俩函数都是mixchannel( )的特例。
注意:其实任何一张彩图都是4通道图像,只是读不读的问题。
- Scalar
在C++和opencv编程的时候,自建一个图片矩阵的时候,会用到Scalar函数和CV_8UC1等数据类型,用法如下:
Scalar表示为图像的通道赋值,CV_8UC1表示8位无符号数1通道,CV_8UC3表示8位无符号数3通道,CV_8UC4表示8位无符号数4通道。通道数也就是声明数组‘大小’,是1维还是3维,CV_8UC2不常用
Scalar(x),一般用于灰度图像,数据格式为:CV_8UC1或者是CV_8U,但是如果将数据格式变成CV_8UC3,则一个参数的情况下默认为B分量,后面的GR默认为0
Scalar(x,y),数据格式为CV_8UC1时,忽略后面的y,数据格式变成CV_8UC3,默认为BG分量,后面的R默认为0
Scalar(x,y,z),一般用于彩色图像的显示
Scalar(x,y,z,m),一般用于带透明通道的图像显示
结论:CV_8UCn和Scalar中的参数个数m的关系,如果n>m,那么后面的通道值默认为0,如果n<m,那么只取calar中的参数中的前n个。
Mat Img_tmp(600, 500, CV_8UC4, Scalar(255,255,255,0));
表示自建一个大小为600*500的四通道白色不透明的图片
- split( )
C++: void split(const Mat& mtx, Mat* mv)
C++: void split(const Mat& mtx, vector<Mat>& mv)
参数:mtx 输入矩阵
mv 输出矩阵或矩阵数组
merge( )
C++: void merge(const Mat* mv, size_t count, OutputArray dst)
C++: void merge(const vector<Mat>& mv, OutputArray dst)
参数:mv 输入矩阵
count 当mv是C形式的array时,count表示输入矩阵个数
dst 输出矩阵
图像通道、Scalar、分离、合成通道的更多相关文章
- opencv 3 core组件进阶(2 ROI区域图像叠加&图像混合;分离颜色通道、多通道图像混合;图像对比度,亮度值调整)
ROI区域图像叠加&图像混合 #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp&g ...
- opencv3.2.0 分离颜色通道&多通道图像混合
##名称:分离颜色通道&多通道图像混合 ##平台:QT5.7.1+OpenCV3.2.0 ##时间:2017年12月11日 /***************创建QT控制台程序********* ...
- python实现图像加载与保存,窗口创建与销毁,图片常用属性,ROI,通道的分离与合并,对比度和亮度
目录: (一)图像加载与保存 (二)图像显示窗口创建与销毁 (三)图片的常用属性的获取 (四)生成指定大小的矩形区域(ROI) (五)图片颜色通道的分离与合并 (六)两张图片相加,改变对比度和亮度 ( ...
- Opencv中RGB通道/HSV通道并分离
OpenCV中HSV颜色模型及颜色分量范围 opencv HSV 颜色模型(H通道取值 && CV_BGR2HSV_FULL) [opencv]在hsv颜色空间识别区域颜色 将原图分离 ...
- 学习 opencv---(4) 分离颜色通道 && 多通道混合
上篇文章中我们讲到了使用addWeighted函数进行图像混合操作,以及将ROI和addWeighted函数结合起来使用,对指定区域进行图像混合操作. 而为了更好地观察一些图像材料的特征,有时需要对R ...
- OpenCV3编程入门笔记(2)计时函数、感兴趣区域RIO、分离/混合通道
11 绘制直线的line函数 DrawLine(Mat img, Pont start, Point end); 绘制椭圆的ellipse函数 DrawEllipse(Mat img, dou ...
- OpenCV 学习笔记(8)彩色图像RGB通道的分离、合并与显示
https://blog.csdn.net/ZYTTAE/article/details/42234989 由于算法的需要,需要把彩色图像的R.G.B值分离出来,OpenCV中正好有split() 和 ...
- 通道的分离与合并,ROI,
通道的分离与合并 class Program { static void Main(String[] args) { Mat img = CvInvoke.Imread(@"C:\Users ...
- Halcon学习之三:有关图像通道的函数(R是三通道,B是1通道,G二通道),排列顺序BGR
黑白摄像机会返回每个像素所对应的能量采用结果,这些结果组成了一幅单通道灰度值图像,而对于RGB彩色摄像机,它将返回每个像素所对应的三个采样结果,也就是一幅三通道图像.下面这些是与图像通道有关的函数: ...
随机推荐
- axios——post请求时把对象obj数据转为formdata格式
转载自:https://blog.csdn.net/feizhong_web/article/details/80514436 在调用后台接口的时候,上传报名信息,利用axios 的post请求,发 ...
- react之可控组件与不可控组件
一.不可控组件 <input type="text" defaultvalue="Hello React" /> 如上:defaultvalue的值 ...
- Linux System命令
http://blog.csdn.net/cheyo/article/details/6595955 #include <stdio.h> #include <stdlib.h> ...
- Nginx在windows系统的常用命令
启动 start nginx 强制停止 nginx.exe -s stop 重启 nginx.exe -s reload
- Element-ui之修改样式
修改样式的方法 官网上面介绍了几种方法: 当然还有其他的方法,比如: 直接在标签上面采用行内式: 在组件中的style里面添加样式: 引入.scss文件(注意:如果是公用样式最好在index.scss ...
- 【BZOJ 1257】[CQOI2007]余数之和sum
一道LLJ说他吃*的题. 我实在是太愚蠢了. 传送门
- 纯CSS样式写刘海屏效果
1. 效果: 2. 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...
- https,http和ssl的关系
https,http和ssl这三者是什么关系呢? http是超文本传输协议,浏览器利用这一协议就可以访问各种网站了. ssl指Secure Sockets Layer 安全套接层,是一种保证网络数据传 ...
- spring boot 监听容器启动
/** * 在容器启动的时候 加载没问完成的消息重发 * @author zhangyukun * */ @Component @Slf4j public class LoadMessageListe ...
- axis2开发webservice接口入门到精通详解(转)
最近在开发接口,在网上发现了两篇不错的文章,给大家分享下: 第一篇: 一.Axis2的下载和安装 1.可从http://ws.apache.org/axis2/ 下载Axis2的最新版本: ...