opencv Iplimage data access
来源:互联网 发布:大数据和数据挖掘教程 编辑:程序博客网 时间:2024/06/05 14:23
分享一下我对数据结构IplImage的使用,个人习惯,我倾向于使用iplImage类里面的data指针,但是这种做法的确比较危险,原因是opencv里面对于数组来说有个row-based 4-aligned机制(可能是为了读取内存更快一些), EX: A 2*3 matrix:
XXX* XXX
XXX* XXX
(1) (2)
http://opencv.willowgarage.com/documentation/c/basic_structures.html
如上所示, 一个2*3矩阵在opencv的处理方式是图(1)而非图(2)。在这种情况下,矩阵的row不被4字节整除,则强制性插入多余的字节使之4-aligned.
对于对data操作正确的做法是:
//以下代码令灰度图像img(i, j)=111
IplImage* img = cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1);
int height = img->height;
int width = img->width;
int step = img->widthStep/sizeof(uchar);
uchar* data = (uchar *)img->imageData;
data[i*step+j] = 111;
http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html#SECTION00041000000000000000
注意如上代码通过img->widthStep巧妙的处理了4字节对齐问题。
对于工程应用而言,比方说爸pImg的数据copy到uchar *pArr上面,"memcpy(pArr, pImg->data, height*width*sizeof(uchar));"这段代码依然具备诱惑力,毕竟太简洁了,当然前提是pImg的行size是被4整除(本人在这上面吃过亏,不推荐使用)。
XXX* XXX
XXX* XXX
(1) (2)
http://opencv.willowgarage.com/documentation/c/basic_structures.html
如上所示, 一个2*3矩阵在opencv的处理方式是图(1)而非图(2)。在这种情况下,矩阵的row不被4字节整除,则强制性插入多余的字节使之4-aligned.
对于对data操作正确的做法是:
//以下代码令灰度图像img(i, j)=111
IplImage* img = cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1);
int height = img->height;
int width = img->width;
int step = img->widthStep/sizeof(uchar);
uchar* data = (uchar *)img->imageData;
data[i*step+j] = 111;
http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html#SECTION00041000000000000000
注意如上代码通过img->widthStep巧妙的处理了4字节对齐问题。
对于工程应用而言,比方说爸pImg的数据copy到uchar *pArr上面,"memcpy(pArr, pImg->data, height*width*sizeof(uchar));"这段代码依然具备诱惑力,毕竟太简洁了,当然前提是pImg的行size是被4整除(本人在这上面吃过亏,不推荐使用)。
- opencv Iplimage data access
- opencv iplimage socket 传输
- opencv中的IplImage
- byte * 转opencv IplImage
- opencv iplimage socket 传输
- OpenCV---IplImage结构
- Opencv--Mat,IplImage数据类型
- [OpenCV] -- IplImage浅析
- opencv中的IplImage .
- OpenCV的IplImage图像格式
- opencv 图像显示IplImage
- OpenCV中IplImage图像格式
- OpenCV Mat转IplImage
- OpenCV IplImage数据结构
- openCV IplImage结构体
- YV12转opencv IplImage
- 2.1 opencv中的IplImage
- opencv IplImage结构
- C语言中的面向对象思想
- Assert
- 2012.1.2 poj2346 自己独立想出状态转移方程的DP题目
- 黑马程序员----看视频后对反射总结做的总结
- 1
- opencv Iplimage data access
- 配置Ubuntu 10.10提供HTTPS服务
- 动态规划 杭电1231
- sql server 触发器详解
- TLD 算法问题:libopencv_calib3d.so.2.2: cannot open shared object file: No such file or directory
- 重命名数据库表空间和数据文件
- mysql全文检索
- Automake的标准工程组织
- 求 有关数字功放的设计报告 见详情