vc将彩色图像转换为灰度图像

这段代码展示了如何使用VC++将彩色图像转换为灰度图像。通过计算红、绿、蓝三个通道的加权平均值,每个像素被转换为对应的灰度值。转换过程中涉及到内存分配、颜色表创建以及图像宽度和高度的处理。
摘要由CSDN通过智能技术生成
void GrayTrans::ColorToGray()
{
	if (m_nBitCount==8)
	{
	   return ;
	}
	if (m_pImgDataOut!=NULL)
	{
		delete []m_pImgDataOut;
		m_pImgDataOut=NULL;
	}
	if (m_lpColorTableOut!=NULL)
	{
		delete []m_lpColorTableOut;
		m_lpColorTableOut=NULL;
	}

	m_nBitCountOut=8;

	m_nColorTableLengthOut=ComputeColorTableLength(m_nBitCountOut);

	if(m_nColorTableLengthOut!=0)
	{
		m_lpColorTableOut=new RGBQUAD[ m_nColorTableLengthOut];
		for ( int i=0; i<m_nColorTableLengthOut; i++)
		{
			m_lpColorTableOut[i].rgbBlue=i;
			m_lpColorTableOut[i].rgbGreen=i;
			m_lpColorTableOut[i].rgbRed=i;
			m_lpColorTableOut[i].rgbReserved=0;
		}
	}

	int pixelByteIn=3;

	int lineByteIn=(m_imgWidth*pixelByteIn+3)/4*4;

	m_imgWidthOut=m_imgWidth;
	m_imgHeightOut=m_imgHeight;

	int lineByteOut=(m_imgWidth*m_nBitCountOut/8+3)/4*4;

	m_pImgDataOut=new unsigned char[lineByteOut*m_imgHeight
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值