欢迎来到天天文库
浏览记录
ID:25968617
大小:172.50 KB
页数:27页
时间:2018-11-23
《8种常用图像处理算法(函数)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、8种常用图像处理算法(函数)这是我毕业设计的一部分代码/***************************************************************************函数名称:**VertMirror()**参数:**LPSTRlpDIB//指向源DIB图像指针**返回值:**BOOL//镜像成功返回TRUE,否则返回FALSE。**说明:**该函数用来实现DIB图像的垂直镜像。*************************************************************************/BOOLW
2、INAPIVertMirror(LPSTRlpDIB){//原图象宽度LONGlWidth;//原图象高度LONGlHeight;//原图象的颜色数WORDwNumColors;//原图象的信息头结构指针LPBITMAPINFOHEADERlpbmi;//指向原图象和目的图象的像素的指针LPBYTElpSrc,lpDst;//平移后剩余图像在源图像中的位置(矩形区域)CRectrectSrc;//指向原图像像素的指针LPBYTElpDIBBits;中国图象图形网www.image2003.com//指向复制图像像素的指针LPBYTElpNewDIBBits;//内存句柄HL
3、OCALh;//循环变量LONGi;//图像每行的字节数LONGlLineBytes;//获取图象的信息头结构的指针lpbmi=(LPBITMAPINFOHEADER)lpDIB;//找到图象的像素位置lpDIBBits=(LPBYTE)::FindDIBBits(lpDIB);//获取图象的宽度lWidth=::DIBWidth(lpDIB);//获取图象的高度lHeight=::DIBHeight(lpDIB);//获取图象的颜色数wNumColors=::DIBNumColors(lpDIB);//计算图像每行的字节数lLineBytes=WIDTHBYTES(lWi
4、dth*(lpbmi->biBitCount));//暂时分配内存,以保存新图像h=LocalAlloc(LHND,lLineBytes);//分配内存失败,直接返回if(!h)returnFALSE;//锁定内存lpNewDIBBits=(LPBYTE)LocalLock(h);//如果是256色位图或真彩色位图if(wNumColors==256
5、
6、wNumColors==0){中国图象图形网www.image2003.com//平移图像,每次移动一行for(i=0;i7、DIBBits+lLineBytes*i;//目标区域同样要注意上下倒置的问题lpDst=(LPBYTE)lpDIBBits+lLineBytes*(lHeight-i-1);//备份一行memcpy(lpNewDIBBits,lpDst,lLineBytes);//将倒数第i行像素复制到第i行memcpy(lpDst,lpSrc,lLineBytes);//将第i行像素复制到第i行memcpy(lpSrc,lpNewDIBBits,lLineBytes);}}else{AfxMessageBox("只支持256色和真彩色位图");//释放内存LocalUnlock(h);8、LocalFree(h);returnfalse;}//释放内存LocalUnlock(h);LocalFree(h);//返回returnTRUE;}/***************************************************************************函数名称:**RotateDIB()*中国图象图形网www.image2003.com*参数:**LPSTRlpDIB//指向源DIB图像指针**intiAngle*说明:**该函数用来实现DIB图像的旋转。**********************************9、***************************************/HGLOBALWINAPIRotateDIB(LPSTRlpDIB,intiAngle){//原图象宽度LONGlWidth;//原图象高度LONGlHeight;//旋转后图象宽度LONGlNewWidth;//旋转后图象高度LONGlNewHeight;//原图象的颜色数WORDwNumColors;//原图象的信息头结构指针LPBITMAPINFOHEADERlpbmi,lpbmi0;//指向原图象和目的图象的像素的指针LPBYT
7、DIBBits+lLineBytes*i;//目标区域同样要注意上下倒置的问题lpDst=(LPBYTE)lpDIBBits+lLineBytes*(lHeight-i-1);//备份一行memcpy(lpNewDIBBits,lpDst,lLineBytes);//将倒数第i行像素复制到第i行memcpy(lpDst,lpSrc,lLineBytes);//将第i行像素复制到第i行memcpy(lpSrc,lpNewDIBBits,lLineBytes);}}else{AfxMessageBox("只支持256色和真彩色位图");//释放内存LocalUnlock(h);
8、LocalFree(h);returnfalse;}//释放内存LocalUnlock(h);LocalFree(h);//返回returnTRUE;}/***************************************************************************函数名称:**RotateDIB()*中国图象图形网www.image2003.com*参数:**LPSTRlpDIB//指向源DIB图像指针**intiAngle*说明:**该函数用来实现DIB图像的旋转。**********************************
9、***************************************/HGLOBALWINAPIRotateDIB(LPSTRlpDIB,intiAngle){//原图象宽度LONGlWidth;//原图象高度LONGlHeight;//旋转后图象宽度LONGlNewWidth;//旋转后图象高度LONGlNewHeight;//原图象的颜色数WORDwNumColors;//原图象的信息头结构指针LPBITMAPINFOHEADERlpbmi,lpbmi0;//指向原图象和目的图象的像素的指针LPBYT
此文档下载收益归作者所有