Opencv中图像大小问题
来源:互联网 发布:vc串口编程 编辑:程序博客网 时间:2024/06/05 20:35
第一次使用OpenCV就遇到了这样的问题:访问图像像素的时候,用的图像大小为pGryImg->width*pGryImg->height(读入图像为IplImage*pGryImg)。之后观察输出图像的结果,发现并没有访问到图像的末尾像素点。
查资料发现:IplImage结构:
typedef struct _IplImage
{
int nSize; /* IplImage大小 */
int ID; /* 版本 (=0)*/
int nChannels; /* 大多数OPENCV函数支持1,2,3 或 4 个通道 */
int alphaChannel; /* 被OpenCV忽略 */
int depth; /* 像素的位深度: IPL_DEPTH_8U, IPL_DEPTH_8S, IPL_DEPTH_16U,
IPL_DEPTH_16S, IPL_DEPTH_32S, IPL_DEPTH_32F and IPL_DEPTH_64F 可支持 */
char colorModel[4]; /* 被OpenCV忽略 */
char channelSeq[4]; /* 同上 */
int dataOrder; /* 0 - 交叉存取颜色通道, 1 - 分开的颜色通道.
cvCreateImage只能创建交叉存取图像 */
int origin; /* 0 - 顶—左结构,
1 - 底—左结构 (Windows bitmaps 风格) */
int align; /* 图像行排列 (4 or 8). OpenCV 忽略它,使用 widthStep 代替 */
int width; /* 图像宽像素数 */
int height; /* 图像高像素数*/
struct _IplROI *roi;/* 图像感兴趣区域. 当该值非空只对该区域进行处理 */
struct _IplImage *maskROI; /* 在 OpenCV中必须置NULL */
void *imageId; /* 同上*/
struct _IplTileInfo *tileInfo; /*同上*/
int imageSize; /* 图像数据大小(在交叉存取格式下imageSize=image->height*image->widthStep),单位字节*/
char *imageData; /* 指向排列的图像数据 */
int widthStep; /* 排列的图像行大小,以字节为单位 */
int BorderMode[4]; /* 边际结束模式, 被OpenCV忽略 */
int BorderConst[4]; /* 同上 */
char *imageDataOrigin; /* 指针指向一个不同的图像数据结构(不是必须排列的),是为了纠正图像内存分配准备的 */
} IplImage;
其中对imgsize的注释是:图像数据大小(在交叉存取格式下imageSize=image->height*image->widthStep)
注意:image->height乘的是image->widthStep,并不是image->width,如果用image->width一般是访问不到图像末尾的。
以下是输出结果的比较:
解释:image->width是指图片宽度的像素个数,而image->widthStep是指图片中每一行占的字节数,这里涉及到了一个4字节对齐的问题。
0 0
- Opencv中图像大小问题
- opencv--转换图像大小
- opencv图像归一化大小
- opencv中图像基础(大小,深度,通道)
- opencv中怎么修改图像大小,增加几行
- opencv中图像基础(大小,深度,通道)
- OpenCV中图像的通道问题
- opencv中图像显示的问题
- opencv图像遍历中出现的问题
- opencv中读取图像的绝对路径问题
- OpenCV入门:缩小图像大小
- OpenCV批量修改图像大小
- opencv批量调整图像大小
- opencv显示图像问题
- OpenCV中图像深度
- opencv中图像缩放
- Opencv中图像滤波
- opencv中图像旋转
- 博客
- android保存数据的方法
- WIN32---窗口程序(Visual Studio 2013)
- Win10导致硬盘无法给BIOS识别修复方法 使用HDAT2_50 /W修复硬盘
- java单例模式 - 学习笔记
- Opencv中图像大小问题
- 关于BigDecimal的四舍五入和截断
- 日经社説 20150519 若い世代に夢与える科学技術計画に
- 系统调用与库函数
- js显示年月日时分秒以及周几
- OpenCV Error: The function/feature is not implemented (OpenCV was built without SURF support) in cvE
- Android 禁止切屏
- git学习笔记(2)——git init命令选项说明
- Java反射机制