正在载入。。。。。。
用户公告
正在载入。。。。。。
时间记忆
正在载入。。。。。。
登录
正在载入。。。。。。
最新日志
正在载入。。。。。。
最新回复
正在载入。。。。。。
最新留言
正在载入。。。。。。
加入群组
正在载入。。。。。。
我的好友
正在载入。。。。。。
我的相册
站点信息
正在载入。。。。。。
毕业前笔记整理-VC++图像处理(四) 
最后一部分,很感谢做机器视觉与图像处理的朋友们~!

//开始合并

if (leftHeighter) //左图高{

         for (i=0;i<newHeight;i++){

                            for (j=0;j<mergeLineBytes;j++){

                                     if (j>=0 && j<=leftWidth-1 ){

                                               if (i>=0 && i<rightHeight){

                                                        *(lpMerge+k*mergeLineBytes+l)=(unsigned char)(*(lpLeftImage+lpLeftfhdr->bfOffBits+leftLineBytes*i+j)); //先读取左图数据

                                                        l++;

                                                        if (l>=mergeLineBytes){

                                                                 k++;

                                                                 l=0;}   }

                                               if (i>=rightHeight && i<leftHeight){

                                                        *(lpMerge+k*mergeLineBytes+l)=(unsigned char)(*(lpLeftImage+lpLeftfhdr->bfOffBits+leftLineBytes*i+j));

                                                        l++;

                                                        if (l>=mergeLineBytes){  k++;  l=0; }   }  }

                                     if (j>=leftWidth && j<mergeLineBytes){

                                               if (i>=0 && i< leftHeight-rightHeight) //剩下区域

                                               {

                                                        *(lpMerge+k*mergeLineBytes+l)=(unsigned char)255;

                                                        l++;

                                                        if (l>=mergeLineBytes){   k++;  l=0;}}

                                               if (i>=leftHeight-rightHeight && i<leftHeight)

                                               {

                                                        *(lpMerge+k*mergeLineBytes+l)=(unsigned char)(*(lpRightImage+lpRightfhdr->bfOffBits+rightLineBytes*(i-leftHeight+rightHeight)+j-leftWidth));

                                                        l++;

                                                        if (l>=mergeLineBytes){  k++;  l=0;}  }   }    }   }   }

         if (rightHeighter) //右图高 {

                   for (i=0;i<newHeight;i++) {

                            for (j=0;j<mergeLineBytes;j++)  {

                                     if (j>=0 && j<=rightWidth-1 && i<=leftHeight-1)  {

                                               *(lpMerge+k*mergeLineBytes+l)=(unsigned char)(*(lpRightImage+lpRightfhdr->bfOffBits+rightLineBytes*i+j)); //首先读取右图数据

                                               l++;

                                               if (l>=mergeLineBytes)  {  k++;   l=0;  }   }

                                     if (j>=0 && j<=rightWidth-1 && i>=leftHeight){

                                               *(lpMerge+k*mergeLineBytes+l)=(unsigned char)(*(lpRightImage+lpRightfhdr->bfOffBits+rightLineBytes*i+j));

                                               l++;

                                               if (l>=mergeLineBytes){  k++;   l=0;}   }

                                     if (j>=rightWidth && j<=newWidth-1 && i<=leftHeight-1){

                                               temp=j;

                                               temp=temp-rightWidth;

                                               *(lpMerge+k*mergeLineBytes+l)=(unsigned char)(*(lpLeftImage+lpLeftfhdr->bfOffBits+leftLineBytes*i+temp));

                                               l++;

                                               if (l>=mergeLineBytes){  k++;   l=0; }  }

                                     if (j>=rightWidth && j<=newWidth-1 && i>=leftHeight){ //填充剩下

                                               *(lpMerge+k*mergeLineBytes+l)=(unsigned char)255;

                                               l++;

                                               if (l>=mergeLineBytes){  k++;  l=0;} } }  }   }

         //写合并图像

         RGBQUAD palette[256];

         for (i=0;i<256;i++)

         {    palette[i].rgbBlue=(BYTE)i;

                   palette[i].rgbGreen=(BYTE)i;

                   palette[i].rgbRed=(BYTE)i;

                   palette[i].rgbReserved=0;  }

         //****************************写入位图文件********************************/

CString strSaveFileType = "位图文件 (*.bmp;*.dib)|*.bmp; *.dib|All Files (*.*)|*.*||";

CFileDialog FileDlg(FALSE, "*.bmp", NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, strSaveFileType);

CString strSaveFilePath;

if( FileDlg.DoModal() == IDOK ){

                   strSaveFilePath=FileDlg.GetPathName();}

CFile fileMerge;

CFileException fileEx;    //原来是这里的问题,把&fileEx放在括号外面2007.1.30

if (!fileMerge.Open(strSaveFilePath,C:modeCreate | C:modeWrite,&fileEx)){

                   fileMerge.Close();   return;}

fileMerge.Write(lpMergefhdr,sizeof(BITMAPFILEHEADER));

fileMerge.Write(lpMergebmpinfo,sizeof(BITMAPINFOHEADER));

fileMerge.Write(palette,sizeof(RGBQUAD)*256);

fileMerge.Write(lpMerge,newWidth*newHeight);

fileMerge.Close();

GlobalUnlock(hLeftImageBuf);

GlobalFree(hLeftImageBuf);

GlobalUnlock(hRightImageBuf);

GlobalFree(hRightImageBuf);

leftFile.Close();

rightFile.Close();

GlobalUnlock(hMergeDIB);

GlobalFree(hMergeDIB);

delete [] leftimage;

delete [] rightimage;    }
 
      总结这些代码的时候,想想这几年从图像处理的编程中也学到不少东西,以后会继续从事这方面工作,希望自己能够继续努力学习,多多练习,不断地去提高~!积累更多的经验,向更多的朋友们学习~!
  • 标签:图像处理 
  • 发表评论:
    正在载入。。。。。。
    Copyright © 2006.09.20 design                                        生活因感动而精彩,理想在创造中放飞--水中月