第一范文网 - 专业文章范例文档资料分享平台

VC数字图像处理编程讲座之一

来源:用户分享 时间:2025/8/30 22:33:51 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

HANDLE data1handle;

LPBITMAPINFOHEADER lpBi; BITMAPINFO *m_pBMI;

CDibDoc *pDoc=GetDocument(); HDIB hdib;

unsigned char *hData; unsigned char *data;

hdib=pDoc->GetHDIB();//得到位图数据的句柄,其中包含图像信息头 BeginWaitCursor();

lpBi=(LPBITMAPINFOHEADER)GlobalLock((HGLOBAL)hdib); hData=(unsigned char*)FindDIBBits((LPSTR)lpBi); m_pBMI=new BITMAPINFO;//生成彩色图像的信息头 m_pBMI->bmiHeader.biBitCount=24; m_pBMI->bmiHeader.biClrImportant=0; m_pBMI->bmiHeader.biClrUsed=0;

m_pBMI->bmiHeader.biCompression=BI_RGB; m_pBMI->bmiHeader.biHeight=lpBi->biHeight; m_pBMI->bmiHeader.biWidth=lpBi->biWidth; m_pBMI->bmiHeader.biPlanes=1;

m_pBMI->bmiHeader.biSize=sizeof(BITMAPINFOHEADER); m_pBMI->bmiHeader.biXPelsPerMeter=0; m_pBMI->bmiHeader.biYPelsPerMeter=0;

m_pBMI->bmiHeader.biSizeImage=WIDTHBYTES(lpBi->biWidth*8)*lpBi->biHeight*3;

file://data=hData; int R,G,B,i,j;

data1handle=GlobalAlloc(GMEM_SHARE,WIDTHBYTES(lpBi->biWidth*8)*lpBi->biHeight*3);

file://生成存储彩色图象数据的缓冲区

data=(unsigned char*)GlobalLock((HGLOBAL)data1handle); for(i=0;ibiHeight;i++)//实现灰度到彩色变换 for(j=0;jbiWidth*8);j++) {

if(*(hData+i*WIDTHBYTES(lpBi->biWidth*8)+j)<=64) {R=0;

G=(int)4*(*(hData+i*WIDTHBYTES(lpBi->biWidth*8)+j));

中国图象图形网 www.image2003.com

B=255; }

if(*(hData+i*WIDTHBYTES(lpBi->biWidth*8)+j)>64

&& *(hData+i*WIDTHBYTES(lpBi->biWidth*8)+j)<=128) {R=0; G=255;

B=(int)4*(128-*(hData+i*WIDTHBYTES(lpBi->biWidth*8)+j)); }

if(*(hData+i*WIDTHBYTES(lpBi->biWidth*8)+j)>128

&& *(hData+i*WIDTHBYTES(lpBi->biWidth*8)+j)<=192)

{R=(int)4*(*(hData+i*WIDTHBYTES(lpBi->biWidth*8)+j)-128); G=255; B=0; }

if(*(hData+i*WIDTHBYTES(lpBi->biWidth*8)+j)>192

&& *(hData+i*WIDTHBYTES(lpBi->biWidth*8)+j)<=255) {R=255;

G=(int)4*(255-*(hData+i*WIDTHBYTES(lpBi->biWidth*8)+j)); B=0;

}

file://将生成的R、G、B分量存入目标缓冲区

*(data+i*WIDTHBYTES(lpBi->biWidth*8)*3+j*3)=B; *(data+i*WIDTHBYTES(lpBi->biWidth*8)*3+j*3+1)=G; *(data+i*WIDTHBYTES(lpBi->biWidth*8)*3+j*3+2)=R; }

GlobalUnlock((HGLOBAL)hdib); GlobalUnlock(data1handle); EndWaitCursor(); CClientDC pDC(this);

file://显示真彩色图像

StretchDIBits(pDC.GetSafeHdc(),0,0,lpBi->biWidth,lpBi->biHeight,0,0,

lpBi->biWidth,

>biHeight,data,m_pBMI,DIB_RGB_COLORS, SRCCOPY); delete m_pBMI;

lpBi-

中国图象图形网 www.image2003.com

}

中国图象图形网

www.image2003.com

搜索更多关于: VC数字图像处理编程讲座之一 的文档
VC数字图像处理编程讲座之一.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c452p35zd2f62h60030pf_9.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top