在OpenCV中一般取元素都用定义好的宏:
取Mat结构的元素的宏为CV_MAT_ELEM,它取2D的矩阵最方便。
取IplImage元素的宏为CV_IMAGE_ELEM,如取一个图像(x,y)点的灰度值:
uchar *ptr=CV_IAMGE_ELEM(image,uchar,i,j*3);
ptr[0],ptr[1],ptr[2]就是对应的B/G/R三个分量了。
IplImage *image =cvLoadImage("image.jpg",CV_LOAD_IMAGE_COLOR);
for(i=0;i<image->height;i++)
for(j=0;j<image->width;j++)
{
uchar * ptr=&CV_IMAGE_ELEM(image,uchar,i,j*3);
ptr[0]=0;
ptr[1]=0;
ptr[2]=0;
}
获取并修改图像像素值,下面方式也是常用方式:
IplImage *image;
image=cvCreateImage(Size1,IPL_DEPTH_8U,3);
uchar* RGBimage= (uchar *) image->imageData;
for(int j=0;j<image->height;j++)
for (int i=0;i<image->width;i++)
{
for (int k=0;k<3;k++)
{
RGBimage[j*image->widthStep+i*3]=0;
RGBimage[j*image->widthStep+i*3+1]=0;
RGBimage[j*image->widthStep+i*3+2]=0;
}
}