|
本书特色(3)
- 220.112.122.*
|
void RemoveBackgrond(CImage *pImgn,CImage *pImgm) { // 清除背景图像 struct IMAGEPARAMENT Pm,Pn; HDC hMemDC; GetImageParament(pImgm,&Pm); // 获取图像参数 GetImageParament(pImgn,&Pn);
if (Pn.nBitCount>1) return; // 模板图像不是二值图像 if ((Pm.nWidth!=Pn.nWidth)||(Pm.nHeight!=Pn.nHeight)) return; // 模板图像尺寸不符要求
hMemDC=pImgm->GetDC(); // 获取位图句柄 pImgn->BitBlt(hMemDC,0,0,Pm.nWidth,Pm.nHeight,0,0,SRCAND); // 屏蔽背景 pImgm->ReleaseDC(); // 释放位图句柄 }
二、二值化方法(九种)作了比较全面的介绍。 三、数学形态学的介绍直观、简洁。 四、区域分割中的轮廓跟踪和线段编码可以在应用程序中直接使用。 五、介绍的六种图像文件格式都给出了实际可用的读、写程序。 六、同时适用于Visual C++.NET与Visual C++两种环境,随书盘上分别给出了相同功能的演示程序。
作者 2006.5.30
|
|
此评论对你有用
没用
|
| |
|
|
|
|
不足之处
- 211.144.100.*
|
整体来说,这本书还是不错的,使用了微软新增的CImage类,而不是其它的书还在用自建的DIB。
美中不足的是,代码的书写风格太C语言化了,看上去有点混乱,几个库IProcessB~IProcessF等,起的名称不知所云,没有进行有效的封装。另外,代码中结构元素的大小固定为3*3、5*5,不能被Client任意设定,等等...
|
|
此评论对你有用
没用
|
| |
|
|
本书特色(2)
- 220.112.122.*
|
hei =lpBmi->bmiHeader.biHeight; bits=lpBmi->bmiHeader.biBitCount; PixSize=(wid*bits+31)/32*4*hei; // 计算像素数据尺寸 free(lpBmi); // 释放位图信息
fseek(fp,Bfh.bfOffBits,SEEK_SET); fread(lpBits,PixSize,1,fp); // 读入像素数据 fclose(fp); }
void DisplayDIBSection (HWND hWnd, HBITMAP hBitmap, int wid, int hei) { // 显示图像(DIBSECTION) HDC hDC, hMemDC; hMemDC =CreateCompatibleDC(NULL); // 建立内存设备描述表 SelectObject(hMemDC,hBitmap); // 内存设备描述表选中位图 hDC = GetDC(hWnd); // 申请窗口句柄 BitBlt(hDC,0,0,wid,hei, hMemDC,0,0,SRCCOPY); // 像素数据成块传输 DeleteObject(hMemDC); DeleteDC(hMemDC); // 释放内存设备描述表 ReleaseDC(hWnd,hDC); // 释放窗口句柄 }
void RemoveBackgrond(CImage *pImgn, CImage *pImgm); pImgm、pImgn 分别为模板图像与源(兼目的)图像。
void RemoveBackgrond(CIma
|
|
此评论对你有用
没用
|
| |
|
|
本书特色
- 220.112.122.*
|
本书特色: 一、以Win32中的DIBSECTION结构来存放图像数据,只用了CreateDIBSection、GetDIBColorTable、SetDIBColorTable与BitBlt
四个位图函数就实现了图像的读入、显示和许多基本操作,下面给出读入BMP图像文件、显示图像和清除背景图像三个函数作例
子。
int wid, hei, bits; // 全局变量(宽、高、像素位数) HBITMAP hBitmap=NULL; LPSTR lpBits;
void LoadBMP(LPCSTR lpstrFileName) { // 读入BMP图像文件 BITMAPFILEHEADER Bfh; LPBITMAPINFO lpBmi; FILE *fp; int BmiSize, PixSize;
fp=fopen(lpstrFileName,'rb');
fread(&Bfh,sizeof(BITMAPFILEHEADER),1,fp); // 读入位图文件头 BmiSize=Bfh.bfOffBits- sizeof(BITMAPFILEHEADER); // 计算位图信息尺寸 lpBmi=(LPBITMAPINFO) malloc(BmiSize); // 申请位图信息存储空间 fread(lpBmi,BmiSize,1,fp); // 读入位图信息
hBitmap=CreateDIBSection(NULL,lpBmi,DIB_RGB_COLORS,(VOID**) &lpBits,NULL,0); // 建立DIBSECTION wid =lpBmi->bmiHeader.biW
|
|
此评论对你有用
没用
|
| |
|