Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >关于OpenCV中图像的widthStep

关于OpenCV中图像的widthStep

作者头像
全栈程序员站长
发布于 2022-07-01 01:19:21
发布于 2022-07-01 01:19:21
5620
举报

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

在OpenCV的IplImage指针结构中,有一个成员widthStep,这个值如何来确定呢,最近让我头疼了好久,终于想明白了,现在

拿出来跟大家交流一下,不知道我的想法对吗,起码在我验证时没有出错。

widthStep应该等于width*3,但是由于4字节对齐问题,有时候需要在一行的末尾需要填充1-3个字节,这时候widthStep>width*3。

因此, widthStep的值的计算有两种情况:

1.当(width*3)%4=0,这时width*3=widthStep;

2.当(width*3)%4 !=0,此时widthStep=(width/4+1)*3。

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

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
OpenCV基础——IplImage中的widthStep
在OpenCV里边,widthStep必须是4的倍数,从而实现字节对齐,有利于提高运算速度。
全栈程序员站长
2022/07/01
4490
OpenCV中的width与widthStep
1.在opencv中width表示的是图像的每行像素数,widthstep表示的是存储一行像素需要的字节数,位了快速读取数据,在opencv中一般使widthStep为4的倍数,从而实现字节的对齐,有利于提高运算速度。
全栈程序员站长
2022/09/02
8090
OpenCV中的width与widthStep
Opencv中width和widthStep的区别
在Opencv的结构Iplimage中,widthStep并不一定等于width*nChannel*(数据类型所占字节),这是因为Opencv中对内存有管理的机制,这一机制会对内存进行对齐,也就是当每一行所占的字节数不等于4的倍数时会自动补齐。
全栈程序员站长
2022/06/26
3700
OpenCv中 width 和 widthStep的区别「建议收藏」
大家好,又见面了,我是你们的朋友全栈君。 opencv中 width 和 widthStep的区别: http://zhidao.baidu.com/link?url=RTDMYjTjkz2woUS
全栈程序员站长
2022/09/06
2770
OpenCV中的width和widthstep[通俗易懂]
在OpenCV里边,widthStep必须是4的倍数,从而实现字节对齐,有利于提高运算速度。
全栈程序员站长
2022/06/30
7710
java+widthstep,i*step+j*channels+k 以及widthStep大小计算及原理
一直以为IplImage结构体中的widthStep元素大小等于width*nChannels,大错特错!
全栈程序员站长
2022/06/27
2220
OpenCV里IplImage的widthStep参数
昨儿在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的二维数组来计算了…
全栈程序员站长
2022/09/03
4450
java+widthstep_关于IplImage中widthstep的大小与width,nchannels等的关系的问题
width是图像宽度,可为任意值;widthstep是行字节数,应该是4的倍数,不一定等于width,nchannels为图像通道数。
全栈程序员站长
2022/09/05
3100
IPlImage的width和widthStep
学习opencv过程中,使用IPLImage结构,调用数据时定位数据区别width和widthStep:
全栈程序员站长
2022/07/01
5050
OpenCv函数学习(一)[建议收藏]
在记录数字图像的颜色时,计算机实际上是用每个像素需要的位深度来表示的。黑白二色的图像是数字图像中最简单的一种,它只有黑、白两种颜色,也就是说它的每个像素只有1位颜色,位深度是1,用2的一次幂来表示;考虑到位深度平均分给R, G, B和Alpha,而只有RGB可以相互组合成颜色。所以4位颜色的图,它的位深度是4,只有2的4次幂种颜色,即16种颜色或16种灰度等级 ) 。8位颜色的图,位深度就是8,用2的8次幂表示,它含有256种颜色 ( 或256种灰度等级 )。24位颜色可称之为真彩色,位深度是24,它能组合成2的24次幂种颜色,即:16777216种颜色 ( 或称千万种颜色 ),超过了人眼能够分辨的颜色数量。当我们用24位来记录颜色时,实际上是以2^(8×3),即红、绿、蓝 ( RGB ) 三基色各以2的8次幂,256种颜色而存在的,三色组合就形成一千六百万种颜色。
全栈程序员站长
2022/07/14
3180
opencv——访问图像元素(imagedata widthstep)
怎么访问图像元素 (坐标起点相对于图像原点 image origin 从 0 开始,或者是左上角 (img->origin=IPL_ORIGIN_TL) 或者是左下角 (img->origin=IPL_ORIGIN_BL)
全栈程序员站长
2022/08/15
6520
关于widthStep造成的问题
最近遇到一个很奇怪的问题,一直没有解决,就是在A图像中设置一个ROI,将其clone给B,然后对B进行二值化,输入
全栈程序员站长
2022/06/28
6100
关于widthStep造成的问题
OpenCV-利用其它widthStep方法把interest——img的所有像素值增加200
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/140946.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/01
3070
OpenCV 2.2版本号以上显示图片到 MFC 的 Picture Control 控件中
OpenCV 2.2 以及后面的版本号取消掉了 CvvImage.h 和CvvImage.cpp 两个文件,直接导致了苦逼的程序猿无法调用里面的显示函数来将图片显示到 MFC 的 Picture Control 控件中。为此,网上非常多人表示仅仅要将那两个文件人为的提取出来然后放到project里面就解决这个问题了,也提供了两个文件的下载,可是这麻烦不说。还会导致一些奇奇怪怪的报错(至少本人是这种,非常崩溃!)。所以在了解了一些gdi画图之后结合网上的代码写了例如以下的函数,仅仅需调用就能够将OpenCV的图片显示在上面了(仅仅支持三通道不支持单通道),初步測试效率跟原来两个文件差点儿相同。假设有大神请帮我完好这份代码!
全栈程序员站长
2022/07/10
5910
opencv:image->imageData+image->widthStep*i)[j]表达式含义
image->imageData+image->widthStep*i)[j] 就是得到image图像中第i行第j列的像素值。
全栈程序员站长
2022/08/31
2760
opencv:image->imageData+image->widthStep*i)[j]表达式含义
opencv边界填充_opencv边缘提取
因为c++算法还不会,决定先用matlab试试,找到一个imfill可以实现区域的填充
全栈程序员站长
2022/10/03
6250
c语言读取bmp图像_opencv 图像处理
以前都是使C语言中File* 、fopen、fread等操作文件,这几天学习了C++ IO标准库,就应用来读取bmp图像。
全栈程序员站长
2022/10/02
1.7K0
利用其它widthStep方法把interest_img的所有像素值增加1[通俗易懂]
#include “stdafx.h” #include <cv.h> #include <highgui.h>
全栈程序员站长
2022/08/23
3200
OpenCV对图像遍历的高效方法
首先介绍几个Mat类型的属性,rows是Mat类型的行数,cols是列数,channels()是通道数,那么对于图像的每一行,都有cols*channels()个像素点,所以我们可以对所有行进行遍历,然后对于特定一行,遍历所有像素点,代码如下:
全栈程序员站长
2022/09/02
5620
openCV基本绘图函数—-画圆函数cvCircle
大家好,又见面了,我是你们的朋友全栈君。#include<iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp>
全栈程序员站长
2022/09/15
7390
openCV基本绘图函数—-画圆函数cvCircle
推荐阅读
相关推荐
OpenCV基础——IplImage中的widthStep
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档