绪:
在OpenCV中 , widthStep是相对于IplImage*进行图像像素拜候操作的;
而step是相对于Mat进行图像像素拜候操作的;
widthStep:存储一行像素需要的字节数;
step:每一行中所有元素的字节总量 , 单元字节;
本文本家儿要介绍:
widthStep界说;widthStep在IplImage中的感化;widthStep在图像像素拜候中的应用;
widthStep总结;
step在Mat类中的感化;step在图像像素拜候中的应用;
文章插图
需要这些哦
OpenCV 2410
方式/
1widthStep界说:
①OpenCV中 , 默认图像原点为图像左上角 , img->origin=IPL_ORIGIN_TL;若是想更改图像原点坐标也可以 , 如img->origin=IPL_ORIGIN_BL , 将图像原点更改为左下角;
一般采用默认的图像原点;
②OpenCV用imread或者cvLoadImage获得的图像数据都是unsigned char类型的;
③IplImage布局体中的widthStep元素大小不一定等于width*nChannels ,
④在cxcore/cxarray.cpp文件中 , cvInitImageHeader对widthStep大小赋值:
image->widthStep =
(((image->width * image->nChannels *(image->depth & ~IPL_DEPTH_SIGN) + 7)/8)+ align - 1) & (~(align - 1));
此中 ,
cxtypes.h界说IPL_DEPTH_SIGN为:#define IPL_DEPTH_SIGN 0x80000000;
cxmisc.h中界说align为:#define CV_DEFAULT_IMAGE_ROW_ALIGN 4;
depth取8位深度;
则可计较图像的widthStep;
一些图像的widthStep如下:
IplImage *image_33 = cvCreateImage(cvSize(3, 3), 8, 3);
IplImage *image_31 = cvCreateImage(cvSize(3, 3), 8, 1);
IplImage *image_53 = cvCreateImage(cvSize(5, 3), 8, 3);
IplImage *image_51= cvCreateImage(cvSize(5, 3), 8, 1);
IplImage *image_73 = cvCreateImage(cvSize(7, 3), 8, 3);
IplImage *image_71 = cvCreateImage(cvSize(7, 3), 8, 1);
printf("%d, %d, %d, %d, %d, %d",
image_33->widthStep,
image_31->widthStep,
image_53->widthStep,
image_51->widthStep,
image_73->widthStep,
image_71->widthStep);
运行成果为:12 , 4 , 16 , 8 , 24 , 8 。
是以 , OpenCV分派的内存按4字节对齐 , 与上述计较成果相符 , 如宽度为3、通道数为3的图像 , 每一行需要的现实内存长度为3*3 , 为了内存对齐 , OpenCV会在每行末从头至尾主动补上3个字节的内存 , 内存初始化都为0 , 所以widthStep变为了12 。
文章插图
2widthStep在IplImage*中的感化:
如下:
typedef struct _IplImage{
int nSize; /* sizeof(IplImage) */
int ID; /* version (=0)*/
int nChannels; /* Most of OpenCV functions support 1,2,3 or 4 channels */
int alphaChannel; /* Ignored by OpenCV */
int depth; /* Pixel depth in bits: IPL_DEPTH_8U, IPL_DEPTH_8S, IPL_DEPTH_16S, IPL_DEPTH_32S, IPL_DEPTH_32F and IPL_DEPTH_64F are supported. */
推荐阅读
- OpenCV:TermCriteria迭代终止条件
- OpenCV:xml文件的读取与写入
- OpenCV:waitKey函数
- OpenCV:resize函数 VS vector:resize函数
- OpenCV:norm-范数求解函数
- OpenCV:goodFeaturesToTrack角点检测的应用
- OpenCV:相机标定示例程序的使用
- OpenCV:相机标定函数和程序
- 如何在Win10上安装STEP 7 V14
- 科学家庭理财step by step,规划幸福人生