OpenCV里IplImage的widthStep参数

OpenCV里IplImage的widthStep参数昨儿在Moto写程序时遇到的问题.当时是要切人脸图片,比较谨慎,做完了想看一下切的效果就写了个程序显示出来,结果很令人诧异,就试了六幅图结果有五幅完全不对头,都产生了错位,每行错开一点,最后看不出来是人脸了…这下烦了,要是自己写的那个切割工具出问题的话,那眼花缭乱的切了两个多小时的工作都白费了,没办法,找原因吧.又仔细的切了几幅,还是不行,奇怪的是有个别图像显示是正确的.其实工作很简单,就是从一幅

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

昨儿在Moto写程序时遇到的问题.当时是要切人脸图片,比较谨慎,做完了想看一下切的效果就写了个程序显示出来,结果很令人诧异,就试了六幅图结果有五幅完全不对头,都产生了错位,每行错开一点,最后看不出来是人脸了…这下烦了,要是自己写的那个切割工具出问题的话,那眼花缭乱的切了两个多小时的工作都白费了,没办法,找原因吧.又仔细的切了几幅,还是不行,奇怪的是有个别图像显示是正确的.其实工作很简单,就是从一幅图片里切割出指定的若干区域而已.于是试了一下每次都切固定大小的区域,100*100,没问题,又正确了,再变回动态大小区域,问题又来了…按理说这个大小对我的代码应该没影响…不经意的看了一下每次切的大小,发现切偶数大小rect时时正确的,奇数大小的rect则显示错误,忽然想到貌似IplImage里面有一个widthStep参数,看OpenCV文档里的例程貌似人家用过这个参数,马上去查,定义是“size of aligned image row in bytes ”,想起来了,当时就对这个参数不理解,这个size不就应该等于*->width x *->nchannels x *->depth么,为什么还要定义出来?做个实验,分别取宽度为奇偶的图片,读这个widthStep参数,果然,偶数的话跟上面计算一样,奇数就会多出一些,那就不难理解为什么会产生错位了.一般对于奇数的width会填充一个RGB,也就是3bytes.那么现在要对IplImage图像数据进行操作,就要按行取(IplImage的imageData是按照BGRBGRBGR按行存储的),然后每一行顺加一个widthStep了,不能傻傻的按照width x height的二维数组来计算了…

小小一个参数困扰了我一个小时,看来以后对这些细节要很小心,要不是比较谨慎检查一下结果,拿这些图像去训练,就等于拿一坨垃圾去做冷面…馋冷面了,在家就吃了三回…还要注意的就是,用到象OpenCV这种库的时候,一定养成先看示例程序的习惯,当时仔细看的话就没这事儿了…毕竟示例是标准的用法,我们是学习.

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

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

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

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

(0)


相关推荐

  • SQL数据库之索引优缺点

    SQL数据库之索引优缺点 SQL数据库之索引使用原则及利弊 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。 优点通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。  可以大大加快数据的检索速度,这也是创建索引的最主要的原因。  可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。  在使用分组和排序子句进行数据检索时,…

  • 微信裂变推广_朋友圈转发送红包营销

    微信裂变推广_朋友圈转发送红包营销维信超级引流红包裂变游戏源码维信超级引流红包裂变游戏源码,H5拆红包源码强制分享朋友圈,可以强制分享两次朋友圈、三个群,分享成功后自动跳转到你的广告页面,访客点击返回跳转广告页面,可以强制分享两次朋友圈,三个群,分享成功后自动跳转到你的广告页面,访客点击返回跳转广告页面。2022超级热门引流红包裂变微信分享朋友圈广告游戏源码-PHP文档类资源-CSDN下载微信超级引流红包裂变游戏源码微信超级引流红包裂变游戏源码,H5拆红包源码强制分享朋友圈,可以更多下载资源、学习资料请访问CSDN下载频道.ht

  • paceMaker_pacemaker怎么读

    paceMaker_pacemaker怎么读1. 简介 Pacemaker是一个集群资源管理者。他用资源级别的监测和恢复来保证集群服务(aka.资源)的最大可用性。它可以用你所擅长的基础组件(Corosync或者是Heartbeat)来实现通信和关系管理。​2. 特性 Pacemaker包含以下的关键特性:  监测并恢复节点和服务级别的故障​  存储无关,并不需要共享存储​  资源无关,任何能用脚本控制的资源

    2022年10月25日
  • ubuntu添加静态路由表_Ubuntu配置静态ip

    ubuntu添加静态路由表_Ubuntu配置静态ip使用route命令(添加临时路由)添加到主机的路由#routeadd-host192.168.1.123deveth0#routeadd-host192.168.1.123gw192.168.1.1添加到网络的路由#routeadd-net192.168.1.123netmask255.255.255.0eth0#routeadd-net192.168…

  • 微商分销代理商城源码-代理等级和升级条件

    微商分销代理商城源码-代理等级和升级条件介绍:微商分销代理商城源码基于think框架开发是一款微商分销代理商城源码,可以自己设置代理等级和升级条件(如购买指定商品、消费额度)网站搭建方式介绍:测试环境php7.0+mysql5.6数据库配置文件\application\database.php后台/admin用户:admin密码:123456网盘下载地址:http://kekewl.cc/jpaQnrd7VcZ0图片:网站源码首页截图演示网站后台截图演示…

  • jsp用户信息管理系统

    jsp用户信息管理系统实现功能1.用户信息注册2.用户信息新增3.用户信息列表4.用户信息删除5.用户信息修改6.用户登录项目包结构:sqlsever数据库结构USE[MyDB]GO/******Object:Table[dbo].[users]ScriptDate:2020/11/119:26:07******/SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOSETANSI_PADDINGONGOCREATETABL

    2022年10月17日

发表回复

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

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