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

OpenCV中的width和widthstep[通俗易懂]一是width属性;二是widthStep属性。     前者是表示图像的每行像素数,后者指表示存储一行像素需要的字节数。     在OpenCV里边,widthStep必须是4的倍数,从而实现字节对齐,有利于提高运算速度。     如果8U单通道图像宽度为3,那么widthStep是4,加一个字节补齐。这个图像的一行需要4个字节,只使用前3个,最后一个空着。

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

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

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

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

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

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

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

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

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

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

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • GFS分布式文件存储系统

    GFS分布式文件存储系统GFS分布式文件存储系统一GlusterFS概述二GlusterFS工作原理三GlusterFS卷类型3.1分布式卷3.2条带卷3.3复制卷3.4分布式条带卷3.5分布式复制卷四GlusterFS案例部署4.1实验环境4.2关闭防火墙与selinux4.3配置hosts文件4.4磁盘格式化与挂载4.5安装软件4.5.1共享Windows系统文件夹gfsrepo4.5.2查看共享文件夹4.5.3挂载共享文件夹4.5.4设置本地源仓库4.5.5安装软件4.5.6时间同步4

    2022年5月7日
  • Pytest(2)使用和调用方法

    Pytest(2)使用和调用方法Pytest执行用例规则Pytest在命令行中支持多种方式来运行和选择测试用例1.对某个目录下所有的用例pytest2.对模块中进行测试pytesttest_mod.py3.对文件夹进行

    2022年7月30日
  • C++智能指针「建议收藏」

    C++智能指针「建议收藏」一、基础知识介绍二、不带引用计数的智能指针三、带引用计数的智能指针四、shared_ptr和weak_ptr五、多线程访问共享对象的线程安全问题六、自定义删除器

    2022年6月20日
  • embedded dylibs/frameworks are only supported on iOS 8.0 and later 错误解决[通俗易懂]

    embedded dylibs/frameworks are only supported on iOS 8.0 and later 错误解决

    2022年1月19日
  • JavaScript如何截取指定位置的字符串

    JavaScript如何截取指定位置的字符串我们在日常开发中,经常需要对字符串进行删除截取增加的操作,我们这次说一下使用JavaScript截取指定位置的字符串。**一、使用slice()截取**slice()方法可以通过指定的开始和结束位置,提取字符串的某个部分,并以新的字符串返回被提取的部分。它的参数有两个,start和end。start是必须填写的参数,规定从何处开始选取,如果是负数,就是从尾部倒着开始算。end是可选填写的参数,规定从何处结束选择,如果没有指定end的值的话,只有start,那么就是默认从start一直截取到结束的

    2022年5月20日
  • javascript 页面后退并刷新

    javascript 页面后退并刷新javascript做页面后退常使用的方法是window.history.back();这样确实可以做到后退的功能,但是项目中,常常并不只是后退就行完成需求,往往需要在后退的同时,刷新后退的页面信息,比如后退到首页同时刷新首页的最新数据,这样的需求通过上面这种方法就没法满足了,为了实现这个需求,我们需要使用到document.referrer这个方法可以取到上一个页面的具体路径

    2022年7月25日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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