OpenCV学习(2)--基本数据结构
OpenCV的基本数据结构
CvPoint:表示图像中的点
CvPoint2D32f:二维空间中的点
CvPoint3D32f:三维空间中的点
这些都是结构体,并不是C++语言中的类,所以他们的构造函数就是简单的内联函数。
1 typedef struct CvPoint 2 { 3 int x; 4 int y; 5 } 6 CvPoint; 7 8 9 CV_INLINE CvPoint cvPoint( int x, int y ) 10 { 11 CvPoint p; 12 13 p.x = x; 14 p.y = y; 15 16 return p; 17 }
其中的CV_INLINE就是一个宏定义:
1 define CV_INLINE inline
CvSize:表示图像的尺寸
CvSize2D32f:浮点型数据表示图像的尺寸
1 typedef struct CvSize 2 { 3 int width; 4 int height; 5 } 6 CvSize; 7 8 CV_INLINE CvSize cvSize( int width, int height ) 9 { 10 CvSize s; 11 12 s.width = width; 13 s.height = height; 14 15 return s; 16 }
CvRect表示图像的部分区域
1 typedef struct CvRect 2 { 3 int x; 4 int y; 5 int width; 6 int height; 7 } 8 CvRect; 9 10 CV_INLINE CvRect cvRect( int x, int y, int width, int height ) 11 { 12 CvRect r; 13 14 r.x = x; 15 r.y = y; 16 r.width = width; 17 r.height = height; 18 19 return r; 20 }
CvScalar包含4个浮点型的成员,可以用来表示B、G、R、alpha。它有三个构造函数,具体的定义:
typedef struct CvScalar
{
double val[4];
}
CvScalar;
//至少传一个参数,如果后面三个没有,默认为0
CV_INLINE CvScalar cvScalar( double val0, double val1 CV_DEFAULT(0),
double val2 CV_DEFAULT(0), double val3 CV_DEFAULT(0))
{
CvScalar scalar;
scalar.val[0] = val0; scalar.val[1] = val1;
scalar.val[2] = val2; scalar.val[3] = val3;
return scalar;
}
//只对第一个参数赋值,后面的为0
CV_INLINE CvScalar cvRealScalar( double val0 )
{
CvScalar scalar;
scalar.val[0] = val0;
scalar.val[1] = scalar.val[2] = scalar.val[3] = 0;
return scalar;
}
//把四个参数都赋值为传入的那个参数
CV_INLINE CvScalar cvScalarAll( double val0123 )
{
CvScalar scalar;
scalar.val[0] = val0123;
scalar.val[1] = val0123;
scalar.val[2] = val0123;
scalar.val[3] = val0123;
return scalar;
}
CvArr、CvMat和IplImage关系
派生关系为:CvArr-->CvMat-->IplImage,当CvArr用作函数的参数的时候,无论传入的是CvMat还是IplImage,内部都是按CvMat处理。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥