opencv系列之~~~简单图片处理函数的使用

来源:互联网 发布:php数组添加元素的函数 编辑:程序博客网 时间:2024/06/08 04:21

脑与认知科学第一次作业

一、作业内容:

1、输入RGB图像,输出HSV图像。

2、分离并输出R/G/B和H/S/V单通道图像。

 

二、术语概念及相关原理:

1、Q:RGB图像和HSV图像:

A:RGB表示三种颜色,红、绿、蓝,是一种三通道的颜色系统,RGB图像是这三种颜色变化及叠加得到的图片;HSV是根据颜色的直观特性确定的一种空间颜色,也称为六角椎体模型,H、S、V分别表示色调、饱和度、亮度。色调H:用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。饱和度S:取值范围为0.0~1.0;亮度V:取值范围为0.0(黑色)~1.0(白色)。

2、Q:通道,单通道,多通道:

A:保存图像颜色信息的通道称为颜色通道,顾名思义,单通道就是一种通道,多通道就是多种通道,RGB图像是种多通道图像,R是1通道,G是2通道,B是3通道,他们混合成的白色底4通道。

3、Q:"cxcore.h"/#include"cv.h"/#include"highgui.h"头文件含义

A:是开源的OPEN CV头文件,具体事哪些函数没查到。

 

三、实现方法:

1、RGB to HSV:

第一步:将图片上传到C++中,cvLoadImage函数实现。

第二步:创建个HSV的空白图像。

第三步:将GRB图像传递给HSV图像,cvCvtColor函数实现。

其中,具体实现见代码文件。

 

2、RGB to H、S、V

第一步:将RGB转换成HSV类型。

第二步:划分HSV图像为H、S、V。cvSplitImage函数实现。

四、实现结果:

 

 


 

五、总结:

深入理解了图像的构成。

通过对代码的修改实验,发现,不管是转HSV还是划分,都要将图像类型转化为能够被处理的暂时称之为位类型吧,即IplImage 转化成 IPL_DEPTH_32F或这类类型。

相关数据类型及函数的总结:

IplImage *src,*floatsrc,*floathsv;//图像类型,类似char的用法。

CvSize size = 0;//矩阵大小类型,类似int的用法

src = cvLoadImage(“图片地址”,-1);//图片上传C++的函数,-1是以默认色彩,0是强制灰色通道,1是色彩通道

size = cvGetSize(src);//获取图像大小

floatsrc = cvCreateImage(size,IPL_DEPTH_32F,3);//创建图像对象吧,大小,位深,3通道。

cvConvertScale(src,floatsrc,1.0/255.0,0);//网上说是归一化。我的理解是类似AD模数转化吧,将实物图像化为计算机能处理的类型。

cvCvtColor(floatsrc,floathsv,CV_BGR2HSV);//RGBtoHSV的转化函数,类似的根据后面的BGR2HSV换成其他的,可以转化其他的类型,例:cvCvtColor(src,dst_gray,CV_BGR2GRAY);//得到灰度图。

cvSplitImage(floathsv,floath,floats,floatv,NULL);//划分函数

cvNamedWindow(“窗口名”,1);//1是图片大小不能更改,0表示岁窗口大小更改

cvShowImage(“窗口名字”,floathsv);//显示图片

cvWaitKey(0);//显示时间,0是永久,t>0表示tms。

cvReleaseImage(&src);//释放指针



0 0
原创粉丝点击