使用OpenCV实现内存中图像数据的RGB-->HSV转换

来源:互联网 发布:药品数据 编辑:程序博客网 时间:2024/06/14 07:58

问题:内存中已有图像灰度数据(24位真彩色,一整幅图像或一幅图像的某块区域),使用OpenCV实现对这些图像数据颜色空间由RGB到HSV的转换

解决: 

 BOOL RGB2HSV() {  //lBlockWidth、nBlockHeight分别为图像数据块的宽高     //创建图像矩阵     CvMat* matSrc = cvCreateMat(nBlockHeight,lBlockWidth,CV_8UC3);cvZero(matSrc);BYTE *pSrc = (BYTE*)cvPtr2D(matSrc,0,0);//创建结果矩阵CvMat* matHSV = cvCreateMat(nBlockHeight,lBlockWidth,CV_8UC3);cvZero(matHSV);BYTE *pHSV = (BYTE*)cvPtr2D(matHSV,0,0);//pSrc元素赋值…………cvCvtColor(matSrc,matHSV,CV_RGB2HLS);//HSV归一化到0~255(cvCvtColor()转换后HSV的范围分别是0~180、0~255、0~255)long long lDis = 0;for (long lRow = 0;lRow < nBlockHeight;++lRow){lDis = lRow*lBlockWidth*lBandNum;for (long lIndexCol = 0;lIndexCol < lBlockWidth;++lIndexCol){pHSV[lDis] *= dHRatio;lDis += 3;}}cvReleaseMat(&matSrc); cvReleaseMat(&matHSV); return TRUE;}

 

原创粉丝点击