首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

opencv中的Mat请问

2013-12-21 
opencv中的Mat请教最近在做一个东西,需要提取一张图片的Mat数组(图片在opencv中不是保存在Mat数组吗?),然

opencv中的Mat请教
最近在做一个东西,需要提取一张图片的Mat数组(图片在opencv中不是保存在Mat数组吗?),然后确定某一点的位置坐标,但是不知道怎么提取,还请高手前辈们指点一下。谢谢
[解决办法]
并不是放到一个Mat数组的。


typedef struct _IplImage {
int nSize;
int ID;
int nChannels;
int alphaChannel;
int depth;
char colorModel[4];
char channelSeq[4];
int dataOrder;
int origin;
int align;
int width;
int height;
struct _IplROI* roi;
struct _IplImage* maskROI;
void* imageId;
struct _IplTileInfo* tileInfo;
int imageSize;
char* imageData;
int widthStep;
int BorderMode[4];
int BorderConst[4];
char* imageDataOrigin;
} IplImage;


从这个结构可以可以看到图片数据是存放在imageData成员指向的一个内存块里面的(注意,imageData的类型是char*)

如果确定了某一个点的坐标,可以用下面的方法获取像素值:

uchar* ptr = ((uchar*)img->imageData + height*img->widthStep);
return ptr[ img->nChannels*width + channel];

其中,img是IplImage结构体指针。width和height是你提供的坐标。channel是哪个通道(即红绿蓝三个通道之一),也是你提供的。如果是灰色图(只有一个通道),那么channel直接取0即可。

热点排行