问题:内存中已有图像灰度数据(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;
}
本文详细介绍了如何利用OpenCV库将内存中已有的图像灰度数据的颜色空间从RGB转换为HSV。通过创建图像矩阵、进行颜色空间转换,并对HSV结果进行归一化处理,最终实现图像颜色空间的有效转换。

1336

被折叠的 条评论
为什么被折叠?



