现在的位置: 首页 > 综合 > 正文

OpenCV图像操作-图像反色操作

2013年09月05日 ⁄ 综合 ⁄ 共 2424字 ⁄ 字号 评论关闭

创建MFC工程,从文件中读入一幅图像,将之反色,然后显示原图片和反色之后的图片。

  1. /*******************************************************************************
  2. 函数名称  : MakeMat
  3. 函数描述  : 使用OpenCV进行图像操作
  4. 输入参数  : N/A
  5. 输出参数  : N/A
  6. 返 回值    : N/A
  7. 作  者      :  hewenming 2012.11.14
  8. *******************************************************************************/  
  9. void MakeMat() 
  10.      IplImage* src = NULL; 
  11.  
  12.      //加载图片至内存 
  13.      src = cvLoadImage("750x500_1126054.bmp"); 
  14.      if (NULL == src) 
  15.      { 
  16.          AfxMessageBox(_T("图片加载失败!")); 
  17.          return
  18.      } 
  19.  
  20.      //获取图片的一些属性 
  21.      int height = src->height;                    
    // 图像高度 
  22.      int width = src->width;                      
    // 图像宽度(像素为单位) 
  23.      int step = src->widthStep;                
    // 相邻行的同列点之间的字节数 
  24.      int channels = src->nChannels;        
    // 颜色通道数目 (1,2,3,4) 
  25.      uchar *data   = (uchar *)src->imageData; 
  26.  
  27.  
  28.      //创建标题名为“美女”的对话框 
  29.      cvNamedWindow("美女"); 
  30.      cvMoveWindow("美女", 600, 250);  
  31.  
  32.      //创建名为“反色”的对话框 
  33.      cvNamedWindow("反色"); 
  34.      cvShowImage("美女",src); 
  35.  
  36.  
  37.      //反色操作 
  38.      for(int i=0;i != height; ++ i)  
  39.      { 
  40.          for(int j=0;j != width; ++ j) 
  41.          { 
  42.              for(int k=0;k != channels; ++ k) 
  43.              { 
  44.                   data[i*step+j*channels+k]=255-data[i*step+j*channels+k];  
  45.              } 
  46.          } 
  47.      }  
  48.          
  49.  
  50.      //将图片显示到对话框中 
  51.      cvShowImage("反色",src); 
  52.      cvWaitKey(0); 
  53.  
  54.      //释放内存与对话框销毁 
  55.      cvReleaseImage(&src); 
  56.      cvDestroyWindow("美女"); 
  57.      cvDestroyWindow("反色"); 
  58.  
  59.      //退出 
  60.      exit(0); 

如果想保存反色后的图像,添加以下代码即可:

  1. //保存反色后的图像 
  2. cvSaveImage("反色.bmp",src); 

抱歉!评论已关闭.