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这种库的时候,一定养成先看示例程序的习惯,当时仔细看的话就没这事儿了…毕竟示例是标准的用法,我们是学习.

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

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

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


相关推荐

  • 常用jenkins插件汇总

    常用jenkins插件汇总1、ActiveChoicesPlug-in提供更多的参数展示方式,以及不同参数之间的动态关联2、ExtendedChoiceParameterPlug-In扩展参数值、默认值、参数说明的应用方式,可以从文件中获取3、Multijobplugin将已经创建的任务串行或并行,可以定义执行顺序以及参数传递4、PublishOverSSH通过ssh的方式向远端机器发送命令5、SCMAPIPlugin通过轮询方式检测版本库是否有更改,更改则触发构建…

    2022年5月5日
    60
  • Python报错:OSError: cannot open resource

    Python报错:OSError: cannot open resourcePython报错:OSError:cannotopenresource今天借助Python第三方库写了一个简单的生成词云的编程,但在使用wordcloud生成词云过程中,出现了OSError:cannotopenresource错误,通过断点调试并查看了一些网上的解决方法找到了原因:字体属性font_path的设置与系统提供的字体不一致。在本地电脑没有所写的字体,或是字体名称后缀…

    2022年9月4日
    5
  • ip addr命令作用_ipconfig命令的功能和作用

    ip addr命令作用_ipconfig命令的功能和作用一、ifconfig命令1)配置地址:比如修改eth0网卡的ip为192.168.174.100,子网掩码为255.255.255.0ifconfigeth0192.168.174.100/24使用ifconfig修改ip会直接在内存中生效,重启系统或者重启network服务就丢失。重启服务:Centos6:ser…

    2022年7月27日
    33
  • python下载ts视频文件「建议收藏」

    python下载ts视频文件「建议收藏」importrequestsfrommultiprocessingimportPooldefmission(url,n):headers={"User-Agent":"Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/69.0.3497.100Safa…

    2022年7月18日
    55
  • 多吃碱性食物 远离癌症

    多吃碱性食物 远离癌症

    2021年8月4日
    51
  • DOS命令copy con的用

    DOS命令copy con的用copy是复制命令con 是dos 设备文件的简称。 在dos中把很多外部设备作为文件,称为设备文件。dos中这样规定的:con 控制台(键盘/显示器) aux (或com1)第一个串口 lpt1 第一个并行打印机接口,nul 不存在的设备 所以,举例说明: copy con abc

    2022年7月18日
    13

发表回复

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

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