opencv widthstep 理解

opencv widthstep 理解widthstep是指图像每行所占的字节数,主要要和width区别,width是指每行所含的像素个数,但是一个像素也可能占一个字节,也可能占三个字节或者四个,多个等.imagedata是指向存储图像像素值数组的指针,内容是这个数组的首地址,pt.y指的是像素点的行坐标,所以Img->imageData+Img->widthStep*pt.y便是该像素点所在行的首地址,然后再加上该像

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

widthstep是指图像每行所占的字节数,

定义:

image->widthStep = (((image->width * image->nChannels *(image->depth & ~IPL_DEPTH_SIGN) + 7)/8)+ align – 1) & (~(align – 1)); 

图像宽度    图像通道数    计算得到的widthStep

        3           12

       1           4

       3           16

        1           8

       3           24

       1           8

       3           12

       1           4

主要要和width区别,width是指每行所含的像素个数,但是一个像素也可能占一个字节,也可能占三个字节或者四个,多个等

.imagedata是指向存储图像像素值数组的指针,内容是这个数组的首地址,pt.y指的是像素点的行坐标,所以Img->imageData + Img->widthStep*pt.y便是该像素点所在行的首地址,然后再加上该像素点所在的列,即pt.x,就得到了该像素点的地址,所以代码也可以写成

((uchar*)(Img->imageData + Img->widthStep*pt.y+pt.x)),都是指该像素点的像素值,至于强制类型转换,是因为会产生一些负值,而像素值是不能为负的.

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

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

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


相关推荐

  • java中的反射

    java中的反射主要介绍以下几方面内容理解Class类理解Java的类加载机制学会使用ClassLoader进行类加载理解反射的机制掌握Constructor、Method、Field类的用法理解并掌

    2022年7月1日
    22
  • 如何使用cmd打开磁盘目录和文件

    如何使用cmd打开磁盘目录和文件

    2021年9月19日
    450
  • Mysql8.0 mysqldump 报错:Unknown table ‘COLUMN_STATISTICS‘ in information_schema (1109)

    Mysql8.0 mysqldump 报错:Unknown table ‘COLUMN_STATISTICS‘ in information_schema (1109)在mysql8.0之前的mysqldump命令格式为:mysqldump–host=<server>–port=<port>–user<user>–passworddatabase>dump_file_pathmysql8.0版本此命令会报错Unknowntable’COLUMN_STATISTICS’ini…

    2022年9月15日
    5
  • 如何更好的组织代码「建议收藏」

    如何更好的组织代码「建议收藏」一、组织代码的原因或意义代码的编写应当首先让其他人能够看懂,其次才是让机器能够执行。合理组织代码的目的并不是让计算机理解你的代码,而是让其他人能够很好地读懂你所编写的代码,进而在某种程度上高效而自信

    2022年8月3日
    7
  • vue双向绑定失效_vue 跨域

    vue双向绑定失效_vue 跨域v-for渲染一个数组到视图上,对这个数组进行如下操作时会导致双向绑定失败无法在视图上渲染最新的数据:1.对这个数组的数组项整个进行修改Item:[{name:’小王’,age:19,},{name:’小张’,age:22}]this.Item[0]={name:’小K’,age:98}此时发现视图上渲染的第0项是没有改变的,但是打印出来的Item是已经修改到的为什么说整个数组项,如果对数组内对象的某个属性值修改,视图上还是能监听到的2.对这个数组进行添加或删除操作this.Ite

    2022年9月14日
    0
  • 金融投资理财基础知识

    金融投资理财基础知识随着当前金融互联网的兴起,当前的投资理财方式较以前相比,更加的多样化。就不说银行存款了,当下风险最低,收益最低的理财方式,因为通货膨胀,可能存的越久就钱越不值钱。下面主要介绍一下当下比较流行的投资方式: 一银行理财产品各个银行,无论是国有的,还是民营的银行,都有推出自己银行的理财产品。那什么是银行理财产品呢?就是银行开发设计并销售的资金投资和管理计划,银行只接受客户的授权管理资金

    2022年5月8日
    105

发表回复

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

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