opencv1.0对图像像素点的操作

来源:互联网 发布:php增删改查源码 编辑:程序博客网 时间:2024/05/22 00:28

OpenCv像素点的操作

OpenCv1.0中对特定像素点的操作如下:

1、间接方法

   IplImage *img = cvLoadImage("1.bmp");   //加载图片     CvScalar cs;                            //声明像素变量     for(int i = 0; i < img->height; i++)   {  for (int j = 0; j < img->width; j++)  {      cs = cvGet2D(img, i, j);   //获取像素      cs.val[0] = 0;             //对指定像素的RGB值进行重新设定              cs.val[1] = 0;      cs.val[2] = 0;      cvSet2D(img, i, j, cs);    //将改变的像素保存到图片中           }      }
2、直接方法

对于单通道字节型的图像

IplImage *img = cvLoadImage("2.bmp");    //加载图片  for(int i = 0; i < img->height; i++)  {      for(int j = 0; j < img->width; j++)      {         ((uchar *)(img->imageData +  i * img->widthStep ))[j] = 0;  //对指定像素进行修改      }  }  

对于多通道字节型的图像

IplImage *img = cvLoadImage("3.bmp");   //加载图片  IplImage *imgBuf = cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 3);   //通道为3  cvConvert(img, imgBuf);   //将源图片转化为位深度为8,通道为3的图片  for (int i = 0; i < img->height; i++)  {       for(int j = 0; j < img->width; j++)       {             ((uchar *)(img->imageData +  i * img->widthStep ))[j * img->nChannels + 0] = 234;   //改变B分量             ((uchar *)(img->imageData +  i * img->widthStep ))[j * img->nChannels + 1] = 200;   //改变G分量             ((uchar *)(img->imageData +  i * img->widthStep ))[j * img->nChannels + 2] = 150;   //改变R分量       }  }  



0 0