OpenCV——图像的深度与通道数讲解

矩阵数据类型: 
– CV_(S|U|F)C 
S = 符号整型 U = 无符号整型 F = 浮点型 
E.g.: 
CV_8UC1 是指一个8位无符号整型单通道矩阵, 
CV_32FC2是指一个32位浮点型双通道矩阵 
CV_8UC1 CV_8SC1 CV_16U C1 CV_16SC1 
CV_8UC2 CV_8SC2 CV_16UC2 CV_16SC2 
CV_8UC3 CV_8SC3 CV_16UC3 CV_16SC3 
CV_8UC4 CV_8SC4 CV_16UC4 CV_16SC4 
CV_32SC1 CV_32FC1 CV_64FC1 
CV_32SC2 CV_32FC2 CV_64FC2 
CV_32SC3 CV_32FC3 CV_64FC3 
CV_32SC4 CV_32FC4 CV_64FC4

其中,通道表示每个点能存放多少个数,类似于RGB彩色图中的每个像素点有三个值,即三通道的。 
图片中的深度表示每个值由多少位来存储,是一个精度问题,一般图片是8bit(位)的,则深度是8.

前面讲到IplImage的数据结构,IplImage支持 
IPL_DEPTH_8U,无符号8bit整数(8u) 
IPL_DEPTH_8S,有符号8bit整数(8s) 
IPL_DEPTH_16S,有符号16bit整数(16s) 
IPL_DEPTH_32S,有符号32bit整数(32s) 
IPL_DEPTH_32F,32bit浮点数,单精度(32f) 
IPL_DEPTH_64F,64bit浮点数,双精度(64f) IplImage支持1,2,3,4个通道,使用nChannels域标明。 
CvMat *mat=cvCreateMat(rows,cols,CV_(S|U|F)C);

原文地址:https://www.cnblogs.com/long5683/p/9664787.html

时间: 2024-11-11 11:14:56

OpenCV——图像的深度与通道数讲解的相关文章

图像的表示与通道数问题

原文地址:https://blog.csdn.net/mao_hui_fei/article/details/78217049 数字图像的基本概念 对于一幅的数字图像,我们看到的是 肉眼可见的一幅真正的图片,但是计算机看来,这副图像只是一堆亮度各异的点.一副尺寸为 M × N 的图像可以用一个 M × N 的矩阵来表示,矩阵元素的值表示这个位置上的像素的亮度,一般来说像素值越大表示该点越亮. 一般来说,灰度图用 2 维矩阵表示,彩色(多通道)图像用 3 维矩阵(M× N × 3)表示. 下面说说

opencv笔记(3)线性滤波、非线性滤波、图像深度、通道

15     遍历图像中的像素,是先for行数后for列数的,也就是一列一列的遍历,matlab中是从1开始计数,opnecv中采用c语言的从0开始计数. 矩阵归一化:normalize()函数,参数挺多,不过大多都有默认值,不用都写出来,一般要求的图像归一化精简写法为 normalize(InputArray secImage , outputArray dstImage);一个输入,一个输出即可. 16     消除图像中的噪声成分叫做图像的平滑化或滤波操作,信号或图像的能量大部分集中在幅度

OpenCV图像的缩放

函数介绍:    1.cvResize 改变图像大小     void cvResize(const CvArr *src, CvArr *dst, int interpolation)    函数说明:    第一个参数表示输入图像.    第二个参数表示输出图像.    第三个参数表示插值方法,可以有以下四种:     CV_INTER_NN - 最近邻插值,    CV_INTER_LINEAR - 双线性插值 (缺省使用)    CV_INTER_AREA - 使用象素关系重采样.当图像

Opencv 图像读取与保存问题

本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/49737357 本文仅对 Opencv图像读取与保存进行阐述,重在探讨图像读取与保存过程中应注意的细节问题. 1 图像读取 首先看一下,imread函数的声明: // C++: Mat based Mat imread(const string& filename, int flags=1 ); // C: IplImage based

opencv图像像素值读取

说到图像像素,肯定要先认识一下图像中的坐标系长什么样. 1. 坐标体系中的零点坐标为图片的左上角,X轴为图像矩形的上面那条水平线:Y轴为图像矩形左边的那条垂直线.该坐标体系在诸如结构体Mat,Rect,Point中都是适用的.(OpenCV中有些数据结构的坐标原点是在图片的左下角,可以设置的). 2. 在使用image.at<TP>(x1, x2)来访问图像中点的值的时候,x1并不是图片中对应点的x轴坐标,而是图片中对应点的y坐标(也就是编程中的pic.rows那行).x2同理. 3. 如果所

OpenCV图像的轮廓

查找轮廓 轮廓到底是什么?一个轮廓一般对应一系列的点,也就是图像中的一条曲线.表示的方法可能根据不同情况而有所不同.有多重方法可以表示曲线.在openCV中一般用序列来存储轮廓信息.序列中的每一个元素是曲线中一个点的位置.关于序列表示的轮廓细节将在后面讨论,现在只要简单把轮廓想象为使用CvSeq表示的一系列的点就可以了. 函数cvFindContours()从二值图像中寻找轮廓.cvFindContours()处理的图像可以是从cvCanny()函数得到的有边缘像素的图像,或者是从cvThres

opencv图像原地(不开辟新空间)顺时旋转90度

前一阵朋友碰到这么一道题:将图像原地顺时针旋转90度,不开辟新空间.此题看似平易(题目简短),仔细研究发现着实不容易.经过一番探索后,终于找到了正确的算法,但是当使用opencv实现时,有碰到了困难而且费了一番周折才找到问题所在. 首先,解决这个问题,先简化成原地90度旋转一M×N的矩阵A(注意不是N×N方阵).对于2×3的矩阵A = {1,2,3;4,5,6},其目标为矩阵B = {4,1;5,2;6,3}.因为是原地旋转,这里A和B应指向同一大小为6的内存空间. 这里有这样一个重要的导出公式

OpenCV &mdash;&mdash; 图像局部与部分分割(一)

背景减除 一旦背景模型建立,将背景模型和当前的图像进行比较,然后减去这些已知的背景信息,则剩下的目标物大致就是所求的前景目标了 缺点 -- 该方法基于一个不长成立的假设:所有像素点是独立的 场景建模 新的前景(物体移动的新位置) -- 旧的前景 (物体离开后留下的"空洞")-- 背景 cvInitLineIterator()  和  CV_NEXT_LINE_POINT() 对任意直线上的像素进行采样 // 从视频的一行中读出所有像素的RGB值,收集这些数值并将其分成三个文件 #inc

OpenCV &mdash;&mdash; 图像局部与分割(二)

分水岭算法 将图像中的边缘转化成"山脉",将均匀区域转化为"山谷" 分水岭算法首先计算灰度图像的梯度,这对山谷或没有纹理的盆地(亮度值低的点)的形成有效,也对山头或图像中没有主导线段的山脉(山脊对应的边缘)的形成有效.然后开始从用户指定点或算法得到的点开始"灌注"盆地知道这些区域连在一起.基于这样产生的标记就可以把区域合并到一起,合并后的区域又通过聚集的方式进行分割,好像图像被"填充"起来. cvWatershed 用 Inp