OpenCV中的width与widthStep

OpenCV中的width与widthStep1.在opencv中width表示的是图像的每行像素数,widthstep表示的是存储一行像素需要的字节数,位了快速读取数据,在opencv中一般使widthStep为4的倍数,从而实现字节的对齐,有利于提高运算速度。2.函数的原型为image->widthStep=(((image->width*image->nChannels*(image->depth&~IPL_DEPTH_SIGN)+7)/8)+align-1)&(~(alig

大家好,又见面了,我是你们的朋友全栈君。

1.在opencv中width表示的是图像的每行像素数,widthstep表示的是存储一行像素需要的字节数,位了快速读取数据,在opencv中一般使widthStep为4的倍数,从而实现字节的对齐,有利于提高运算速度。

2.函数的原型为

image->widthStep = (((image->width * image->nChannels *(image->depth & ~IPL_DEPTH_SIGN) + 7)/8)+ align - 1) & (~(align - 1));  
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的倍数)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/138964.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号