OpenCV的图像像素访问
OpenCV是基于C/C++语言的开源图像处理函数库,可用于实时处理图像的有关问题,最近在实践访问图像像素方面有些许感悟:
运用OpenCV访问图像像素有间接访问。直接访问、基于指针的访问、基于 c++ wrapper 的直接访问等手段,经过实验觉得基于指针的直接访问较简单高效,同时也更容易接受:
1.对于单通道字节型图像:
IplImage*img=
cvCreateImage(cvSize(740,550),IPL_DEPTH_8U,1);
int height=img->height;
int width-img->width;
int step=img->widthStep/sizeof(uchar);
uchar*data=(uchar*)img->imageData;
2.对于多通道字节型图像:
IplImage* img = cvCreateImage(cvSize(740,550),IPL_DEPTH_8U,3);
int height=img->height;
int width=img->width;
int step=img->widthStep/sizeof(uchar);
int channels=img->nChannels;
uchar*data=(uchar*)img->imageData;
data[i*step+j*channels+k] = 111;
3.对于多通道浮点型图像(假设图像数据采用4字节(32位)行对齐方式):
IplImage*img=
cvCreateImage(cvSize(640,480),IPL_DEPTH_32F,3);
int height=img->height;
int width=img->width;
int step=img->widthStep/sizeof(float);
int channels=img->nChannels;
float*data=(float*)img->imageData;
data[i*step+j*channels+k]=111;