大家好,又见面了,我是你们的朋友全栈君。
1.在opencv中width表示的是图像的每行像素数,widthstep表示的是存储一行像素需要的字节数,位了快速读取数据,在opencv中一般使widthStep为4的倍数,从而实现字节的对齐,有利于提高运算速度。
2.函数的原型为
代码语言:javascript复制image->widthStep = (((image->width * image->nChannels *(image->depth & ~IPL_DEPTH_SIGN) 7)/8) align - 1) & (~(align - 1));
代码语言:javascript复制IplImage *image_33 = cvCreateImage(cvSize(3, 3), 8, 3);
IplImage *image_31 = cvCreateImage(cvSize(3, 3), 8, 1);
IplImage *image_53 = cvCreateImage(cvSize(5, 3), 8, 3);
IplImage *image_51= cvCreateImage(cvSize(5, 3), 8, 1);
IplImage *image_73 = cvCreateImage(cvSize(7, 3), 8, 3);
IplImage *image_71 = cvCreateImage(cvSize(7, 3), 8, 1);
printf("%d, %d, %d, %d, %d, %d", image_33->widthStep,image_31->widthStep,
image_53->widthStep,image_51->widthStep,image_73->widthStep,image_71->widthStep);
运行结果为:12, 4, 16, 8, 24, 8, 与手动计算结果相同。
上图时opencv读取图片数据的mat形式存储格式
所以widthstep=width*channel(必须为4的倍数)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/138964.html原文链接:https://javaforall.cn