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

问题:内存中已有图像灰度数据(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;
}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值