首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >OpenCV中的width和widthstep[通俗易懂]

OpenCV中的width和widthstep[通俗易懂]

作者头像
全栈程序员站长
发布2022-06-30 19:46:05
发布2022-06-30 19:46:05
1K0
举报

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

一是width属性;二是widthStep属性。

前者是表示图像的每行像素数,后者指表示存储一行像素需要的字节数。

在OpenCV里边,widthStep必须是4的倍数,从而实现字节对齐,有利于提高运算速度。

如果8U单通道图像宽度为3,那么widthStep是4,加一个字节补齐。这个图像的一行需要4个字节,只使用前3个,最后一个空着。

也就是一个宽3高3的图像的imageData数据大小为4*3=12字节。

需要注意的是,空着的那个像素并不是无效的,它仍然可以被操作,这就是导致错误的根源。

其实原因就在于,在cvCreateImage的时候,OpenCV为实现字节对齐,使得每行数据实际有16个字节(多出一个),在使用memcpy的过程中,这些多出的字节就把对应的数据给“吃”了,因为这些数据在cvShowImage的时候并不会显示出来,这样,第二行就少一个字节,第三行少两个字节,……,所以整个图像就显示错误了!

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/132058.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档