您现在的位置是:主页 > news > js多久可以做网站/金戈西地那非片
js多久可以做网站/金戈西地那非片
admin2025/6/16 3:37:30【news】
简介js多久可以做网站,金戈西地那非片,音乐网站样式设计,asp网站怎么做三语原博客链接:https://blog.csdn.net/futurewu/article/details/9945611在做机器视觉包括相机视觉时,常常要将一个多通道图像分离成几个单通道图像或者将几个单通道图像合成一个多通道图像,以方便图像处理,这篇博客,是为…
原博客链接:https://blog.csdn.net/futurewu/article/details/9945611
在做机器视觉包括相机视觉时,常常要将一个多通道图像分离成几个单通道图像或者将几个单通道图像合成一个多通道图像,以方便图像处理,这篇博客,是为加深对这两个概念的理解,下面会给出部分OpenCV开源库对单通道与多通道图像间相互转化的程序代码,并对运行结果进行观察分析。
OpenCV中常用IplImage或CvMat存储图像矩阵,而对这两个对象的初始化函数cvCreateImage(CvSize size, int depth, int channels )和cvCreateMat( int rows, int cols, int type )的最后一个参数channels(通道数可以是1、2、3、4)和type都包含了选择通道数,一般来说常用的是RGB颜色空间,而R、G、B则表示三个通道,是三通道图像。此外,depth代表深度,type里包含对深度的选择,深度即选择存储图像矩阵的元素数据类型(长度),数据长度(比如8bit,16bit,32bit)越长,存储的范围越大,相应的,像素也越大,图像就越清晰。
图像通道(RGB色彩模式)就是指单独的红色R、绿色G、蓝色B部分。也就是说,一幅完整的图像,是由红色绿色蓝色三个通道组成的,他们共同作用(合成)产生了完整的图像。同样在HSV色系中指的是色调H,饱和度S,亮度V三个通道。除了这两个三通道图像模式,以下还列举一些常用图像模式(来自百度百科图像模式)
1、位图模式
RGB模式是数码图像中最重要的一个模式,Photoshop的全部功能都支持它,因为Photoshop就是以它为基础来开发的。显示屏上显示的颜色是RGB模式,电视屏幕也是RGB模式,所不同的它不是用数码而是用电平来描述的。扫描仪和数码相机都是捕捉RGB图像信息的,RGB模式是相加的模式,当R、G、B的值都达到最大值时,三色合成便成白色。RGB模式是24位颜色深度。它共有三个通道,每个通道都有8位深度。三个通道合成一起可生成1677万(2^24=1677 7216)种颜色,我们也称之谓“真彩色”。
图像模式的转换与分离:在OpenCV中,常用cvCvtColor()函数将一种模式的图像转换为另一种模式的图像,其函数定义为:
cvCvtColor( const CvArr* src, CvArr* dst, int code )
其中,这个函数的第三个参数code选择要转换的目标图像模式,OpenCVchm文档中介绍该函数所有可能的色彩空间相互变换有:
- /* Constants for color conversion */
- //...大部分省略
另外还有函数cvSplit( )对某个颜色空间的多个通道进行分离:
cvSplit( const CvArr* src, CvArr* dst0, CvArr* dst1,Arr* dst2, CvArr* dst3 );
还可以用cvMerge()函数将几个单通道图像合并为一个多通道图像"
cvMerge( const CvArr* src0, const CvArr* src1,const CvArr* src2, const CvArr* src3, CvArr* dst );
#include"cv.h"
#include"cxcore.h"
#include"highgui.h"
using namespace std;
int main(int argc,char **argv)
{if(argc>=2){IplImage *image,*change,*H,*S,*V,*R,*B,*G,*two,*Zero;//创建图像显示窗口cvNamedWindow("image",CV_WINDOW_AUTOSIZE);cvNamedWindow("R",CV_WINDOW_AUTOSIZE);cvNamedWindow("G",CV_WINDOW_AUTOSIZE);cvNamedWindow("B",CV_WINDOW_AUTOSIZE);cvNamedWindow("HS",CV_WINDOW_AUTOSIZE);cvNamedWindow("HV",CV_WINDOW_AUTOSIZE);cvNamedWindow("VS",CV_WINDOW_AUTOSIZE);cvNamedWindow("RG",CV_WINDOW_AUTOSIZE);cvNamedWindow("RB",CV_WINDOW_AUTOSIZE);cvNamedWindow("BG",CV_WINDOW_AUTOSIZE);cvNamedWindow("Zero",CV_WINDOW_AUTOSIZE);image=cvLoadImage(argv[1]);//载入图像//分配图像空间change=cvCreateImage(cvSize(image->width,image->height),IPL_DEPTH_8U,3);R=cvCreateImage(cvSize(image->width,image->height),IPL_DEPTH_8U,1);G=cvCreateImage(cvSize(image->width,image->height),IPL_DEPTH_8U,1);B=cvCreateImage(cvSize(image->width,image->height),IPL_DEPTH_8U,1);H=cvCreateImage(cvSize(image->width,image->height),IPL_DEPTH_8U,1);S=cvCreateImage(cvSize(image->width,image->height),IPL_DEPTH_8U,1);V=cvCreateImage(cvSize(image->width,image->height),IPL_DEPTH_8U,1);two=cvCreateImage(cvSize(image->width,image->height),IPL_DEPTH_8U,3);Zero=cvCreateImage(cvSize(image->width,image->height),IPL_DEPTH_8U,1);cvZero(Zero);//在将两个通道合并是,不能没有第三个通道,而是将该通道设为空白,即全0cout<<"IPL_DEPTH_8U = "<<IPL_DEPTH_8U<<endl;cout<<"CV_RGB2HSV = "<<CV_RGB2HSV<<endl;cout<<"CV_HSV2RGB = "<<CV_HSV2RGB<<endl;cvCvtColor(image,change,CV_RGB2HSV); //将RGB色系转换为HSV色系cvSplit(image,R,G,B,0);//分离多通道cvSplit(change,H,S,V,0);//分离多通道//显示RGB图单通道图cvShowImage("image",image);cvShowImage("Zero",Zero);cvShowImage("R",R);cvShowImage("G",G);cvShowImage("B",B);cvMerge(R,G,Zero,0,two); //合并两个图像空间cvShowImage("RG",two);//显示B通道为空白时的图像cvMerge(Zero,G,B,0,two);cvShowImage("BG",two);cvMerge(R,Zero,B,0,two);cvShowImage("RB",two);cvMerge(H,S,Zero,0,two);cvCvtColor(two,change,CV_HSV2RGB);//cvShowImage是按照RGB色彩方式显示图像的,故要通过RGB色系展示对HSV色系的更改效果cvShowImage("HS",change);cvMerge(Zero,S,V,0,two);cvCvtColor(two,change,CV_HSV2RGB);//cvShowImage是按照RGB色彩方式显示图像的,故要通过RGB色系展示对HSV色系的更改效果cvShowImage("VS",change);cvMerge(H,Zero,V,0,two);cvCvtColor(two,change,CV_HSV2RGB);//cvShowImage是按照RGB色彩方式显示图像的,故要通过RGB色系展示对HSV色系的更改效果cvShowImage("HV",change);cvWaitKey(0);cvDestroyAllWindows();cvReleaseImage(&image);cvReleaseImage(&change);}system("pause");return 1;
(注意:cvShowImage展示图像是通过RGB的方式展示的,所以要展示HSV色系的图像,要先将其变化为RGB色系再进行展示。一个三通道的图像,如RGB空间的图像,"缺少"某个通道,不能是某个通道没有就设为NULL,而是该通道的元素值都为0,这里增加了Zero单通道图像空间,并用cvZero清空。)
1>单通道
2>RGB某一个通道空白
蓝色通道空白的图像偏蓝,绿色通道空白的图像偏红,红色通道空白的图像偏黄
3>HSV某通道空白
很显然V亮度为空,图像肯定是黑色的了。