您现在的位置是: 软件 > 开发者网络 > 程序方舟 > 开发专栏 > Visual C++开发 > 正文
·速成电脑精英(包分配)白领高薪一族从这里开始



-Java套接字编程(下)
-MediaStudio Pro 6.5教程
-三款卸载软件最新试用
-基于Visual C++的Winsock API研究

Visual C++6.0开发灰度位图处理
2001-09-10· ·刘涛 蒋建国··yesky

上一页  1 2 3 4 5  下一页


  三、图像的数字化处理

  通过以上读文件的操作,已经得到图像数据,由于得到的数据包括多余信息,所以在进行数字图像处理时要进一步删除多余信息,只对位图的像素进行操作,以基于模板的高通滤波为例来讲述数字图像处理的实现 :

void CDibView::OnMENUHighPass()
{ HANDLE data1handle;
 LPBITMAPINFOHEADER lpBi;
 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);
 pDoc->SetModifiedFlag(TRUE);
 data1handle=GlobalAlloc(GMEM_SHARE,WIDTHBYTES(lpBi->biWidth*8)*lpBi->biHeight);
 data=(unsigned char*)GlobalLock((HGLOBAL)data1handle);
 AfxGetApp()->BeginWaitCursor();
 int i,j,s,t,ms=1;
 int sum=0,sumw=0;
 int mask[3][3]={{-1,-1,-1},{-1,9,-1},{-1,-1,-1}};
 for(i=0; ibiHeight; i++)
  for(j=0; jbiWidth; j++)
   {
    sumw=0; sum=0;
    for(s=(-ms); s<=ms; s++)
     for(t=(-ms); t<=ms; t++)
      if(((i+s)>=0) && ((j+t)>=0) && ((i+s)biHeight) && ((j+t)biWidth))
      {
       sumw += mask[1+s][1+t];
      sum+=*(hData+(i+s)*WIDTHBYTES(lpBi->biWidth*8)+(j+t))*mask[1+s][1+t];
}
     if(sumw==0) sumw=1; sum/=sumw;
     if(sum>255)sum=255;
     if(sum<0)sum=0;
       *(data+i*WIDTHBYTES(lpBi->biWidth*8)+j)=sum;
      }
     for( j=0; jbiHeight; j++)
      for( i=0; ibiWidth; i++)
*(hData+i*WIDTHBYTES(lpBi->biWidth*8)+j)=*(data+i*WIDTHBYTES(lpBi->biWidth*8)+j);
      AfxGetApp()->EndWaitCursor();
      GlobalUnlock((HGLOBAL)hdib);
      GlobalUnlock(data1handle);
      EndWaitCursor();
     Invalidate(TRUE);
 }

上一页  1 2 3 4 5  下一页

【责任编辑:方舟】
【发表评论】【关闭窗口】
■ 相关内容
 在存储过程中调用外部的动态连接库
 用VC++实现矢量地图背景下的实时显示
 在Visual C++中用ADO进行数据库编程
 单独使用CRecordSet
 在VC++下实现高彩色工具条
 MFC中自由使用自定义消息
 用VC实现小型矢量图形系统的开发
 VC编程实现数字图像的边缘检测
 多线程技术在VC++串口通信程序中的应用研究
 VC编程实现IE风格的界面
 VC编程实现灰度图像与彩色图像的相互转换
 利用Visual C++实现AVI文件的图像截取
 VC6.0实现逆向操作并防止界面闪烁
 给Win98装上“飞毛腿”
 VC中利用ADO共同实现数据库的操作
 C++ 对象的初始化
 MAP原理及其在MFC中的实现
 C++ 对象和对象的定义
感谢 访问天极网,如果您觉得该文章涉及版权问题,请看这里!