您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 数据通信与网络 > (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:在此添加命令处理程序代码}}
本文标题:(8)图像处理-图像的镜像翻转
链接地址:https://www.777doc.com/doc-3042868 .html