8种常用图像处理算法.doc

上传人:夏** 文档编号:542654622 上传时间:2023-03-11 格式:DOC 页数:33 大小:126.01KB
返回 下载 相关 举报
8种常用图像处理算法.doc_第1页
第1页 / 共33页
8种常用图像处理算法.doc_第2页
第2页 / 共33页
8种常用图像处理算法.doc_第3页
第3页 / 共33页
8种常用图像处理算法.doc_第4页
第4页 / 共33页
8种常用图像处理算法.doc_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《8种常用图像处理算法.doc》由会员分享,可在线阅读,更多相关《8种常用图像处理算法.doc(33页珍藏版)》请在金锄头文库上搜索。

1、 8种常用图像处理算法(函数) -以下所有函数均放在CimageProcessingView.ccp下1.图像镜像void CCimageProcessingView:OnGeomTrpo() /获取指向文档的指针CCimageProcessingDoc* pDoc = GetDocument();/指向DIB的指针LPSTRlpDIB;/锁定DIBlpDIB = (LPSTR) :GlobalLock(HGLOBAL) pDoc-GetHDIB();/设置光标状态为等待状态BeginWaitCursor();/调用VertMirror函数镜像图象if (VertMirror(lpDIB)/设

2、置文档修改标记pDoc-SetModifiedFlag(TRUE);/更新所有视图pDoc-UpdateAllViews(NULL);else/提示信息MessageBox(实现图象镜像失败!);/解除锁定:GlobalUnlock(HGLOBAL) pDoc-GetHDIB();/结束光标等待状态EndWaitCursor();/* * * 函数名称: * * VertMirror() * * 参数: * * LPSTR lpDIB /指向源DIB图像指针 * * 返回值: * * BOOL /镜像成功返回TRUE,否则返回FALSE。 * * 说明: * * 该函数用来实现DIB图像的垂直

3、镜像。 * */BOOL WINAPI VertMirror(LPSTR lpDIB)/原图象宽度 LONG lWidth;/原图象高度LONG lHeight;/原图象的颜色数WORD wNumColors;/原图象的信息头结构指针LPBITMAPINFOHEADER lpbmi;/指向原图象和目的图象的像素的指针LPBYTE lpSrc,lpDst;/平移后剩余图像在源图像中的位置(矩形区域)CRectrectSrc;/指向原图像像素的指针LPBYTE lpDIBBits;/指向复制图像像素的指针LPBYTE lpNewDIBBits;/内存句柄HLOCALh;/循环变量LONGi;/图像

4、每行的字节数LONG lLineBytes;/获取图象的信息头结构的指针lpbmi=(LPBITMAPINFOHEADER)lpDIB;/找到图象的像素位置lpDIBBits=(LPBYTE):FindDIBBits(lpDIB);/获取图象的宽度lWidth=:DIBWidth(lpDIB);/获取图象的高度lHeight=:DIBHeight(lpDIB);/获取图象的颜色数wNumColors=:DIBNumColors(lpDIB);/计算图像每行的字节数lLineBytes = WIDTHBYTES(lWidth *(lpbmi-biBitCount);/ 暂时分配内存,以保存新图像

5、h= LocalAlloc(LHND, lLineBytes);/ 分配内存失败,直接返回if (!h)return FALSE;/ 锁定内存lpNewDIBBits = (LPBYTE)LocalLock(h);/如果是256色位图或真彩色位图if(wNumColors=256|wNumColors=0) /平移图像,每次移动一行 for(i = 0; iGetHDIB();/ 缩放比率int iRotaAngle;/ 创建对话框CDlgGeoRota dlgPara;/ 初始化变量值dlgPara.m_iRotaAngle = 90;/ 显示对话框,提示用户设定旋转角度if (dlgPar

6、a.DoModal() != IDOK)/ 返回return;/ 获取用户设定的平移量iRotaAngle = dlgPara.m_iRotaAngle;/ 删除对话框delete dlgPara;/创建新DIBHDIB hNewDIB=NULL;/设置光标状态为等待状态BeginWaitCursor();/调用RotateDIB函数旋转DIB图象hNewDIB=(HDIB):RotateDIB(lpDIB,iRotaAngle);/旋转成功if (hNewDIB)/替换原来的DIB图象为新的DIBpDoc-ReplaceHDIB(hNewDIB);/更新DIB图象的大小和调色板pDoc-In

7、itDIBData();/设置文档修改标记pDoc-SetModifiedFlag(TRUE);/调节滚动视图大小SetScrollSizes(MM_TEXT,pDoc-GetDocSize();/更新所有视图pDoc-UpdateAllViews(NULL);else/提示信息MessageBox(实现图象旋转失败!);/解除锁定:GlobalUnlock(HGLOBAL) pDoc-GetHDIB();/结束光标等待状态EndWaitCursor();/* * * 函数名称: * * RotateDIB () * * 参数: * * LPSTR lpDIB /指向源DIB图像指针 * *

8、int iAngle * 说明: * * 该函数用来实现DIB图像的旋转。 * */HGLOBAL WINAPI RotateDIB(LPSTR lpDIB,int iAngle)/原图象宽度 LONG lWidth;/原图象高度LONG lHeight;/旋转后图象宽度 LONG lNewWidth;/旋转后图象高度LONG lNewHeight;/原图象的颜色数WORD wNumColors;/原图象的信息头结构指针LPBITMAPINFOHEADER lpbmi,lpbmi0;/指向原图象和目的图象的像素的指针LPBYTE lpSrc,lpDst;/指向原图像像素的指针LPBYTE lp

9、DIBBits;/指向旋转后图像(像素)的指针LPBYTE lpNewDIBBits;LPSTR lpNewDIB;/旋转后新的DIB句柄HDIBhDIB;/循环变量LONGi,j,i0,j0;/原图像每行的字节数LONG lLineBytes;/旋转后图像每行的字节数LONG lNewLineBytes;/旋转角度的弧度double fArcAngle;/旋转角度的正弦和余弦float fSin,fCos;/旋转前图象四个角的坐标(以图象中心为坐标系原点)float fSrcX1,fSrcY1,fSrcX2,fSrcY2;float fSrcX3,fSrcY3,fSrcX4,fSrcY4;/旋转后图象四个角的坐标(以图象中心为坐标系原点) float fDstX1,fDstY1,fDstX2,fDstY2;float fDstX3,fDstY3,fDstX4,fDstY4;/两个中间量float f1,f2;/找到图象的像素位置lpDIBBits=(LPBYTE):Fi

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号