(8)图像处理-图像的镜像翻转

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

图像的镜面翻转图像的镜面翻转的原理十分简单:若为左右翻转则翻转后图像每个像素点的横坐标均与翻转前对应像素点的横坐标关于图像的竖直中心线对称,若为上下翻转则翻转后图像每个像素点的纵坐标均与翻转前对应像素点的纵坐标关于图像的水平中心线对称下面分别给出水平翻转和竖直翻转的实现代码://水平voidCDipView::OnHorizontal(){CDipDoc*pDoc=GetDocument();if(!(pDoc-m_pBmi&&pDoc-m_pBmData)){MessageBox(_T(NoObject),MB_OK);}else{intsize=pDoc-m_pBmi-bmiHeader.biSizeImage;BYTE*ptemp=NULL;ptemp=newBYTE[size];inti_top=pDoc-m_pBmi-bmiHeader.biHeight;intj_top=pDoc-m_pBmi-bmiHeader.biWidth*3;intw=pDoc-m_pBmi-bmiHeader.biSizeImage/i_top;memcpy(ptemp,pDoc-m_pBmData,size);for(inti=0;ii_top;i++){for(intj=0;jj_top;j+=3){pDoc-m_pBmData[i*w+j]=ptemp[i*w+j_top-3-j];pDoc-m_pBmData[i*w+j+1]=ptemp[i*w+j_top-3-j+1];pDoc-m_pBmData[i*w+j+2]=ptemp[i*w+j_top-3-j+2];}}if(ptemp)deleteptemp;Invalidate();//TODO:在此添加命令处理程序代码}}//竖直voidCDipView::OnUpright(){CDipDoc*pDoc=GetDocument();if(!(pDoc-m_pBmi&&pDoc-m_pBmData)){MessageBox(_T(NoObject),MB_OK);}else{intsize=pDoc-m_pBmi-bmiHeader.biSizeImage;BYTE*ptemp=NULL;ptemp=newBYTE[size];inti_top=pDoc-m_pBmi-bmiHeader.biHeight;intj_top=pDoc-m_pBmi-bmiHeader.biWidth*3;intw=pDoc-m_pBmi-bmiHeader.biSizeImage/i_top;memcpy(ptemp,pDoc-m_pBmData,size);for(inti=0;ii_top;i++){for(intj=0;jj_top;j+=3){pDoc-m_pBmData[(i_top-1-i)*w+j]=ptemp[i*w+j];pDoc-m_pBmData[(i_top-1-i)*w+j+1]=ptemp[i*w+j+1];pDoc-m_pBmData[(i_top-1-i)*w+j+2]=ptemp[i*w+j+2];}}if(ptemp)deleteptemp;Invalidate();//TODO:在此添加命令处理程序代码}}

1 / 2
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功