我是靠谱客的博主 潇洒钢笔,最近开发中收集的这篇文章主要介绍Opencv 学习之路(二)1. Mat结构的使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

                                     Opencv数据结构与基本绘图

1.基础图像容器Mat的用法

2.Opencv 中的多种格式化输出方法

3.常用的数据结构

 

1. Mat结构的使用

从OpenCV踏入2.0版本丝带,使用Mat类数据结构作为主打后,OpenCV有了很大的变化。

(1)不要再手动为其开辟空间。

(2)不必再不需要时立即将空间释放

 

1.1 使用Mat()构造函数创建Mat对象

 

最常用的方法是直接使用Mat构造函数,这种方法简单明了

Mat M(2,2, CV_8UC3, Scalar(0,0,255) );

参数一: 矩阵行数

参数二:矩阵列数

参数三:指定存储袁术的数据类型以及每个矩阵点的通道数。

CV_8UC3   CV_[位数][带符号与否][类型前缀]C[通道数]  八位的unsigned char 型 三通道 

参数四:Scalar( , , )初始化矩阵

 

2. 输出其他常用数据结构

 

  2.1定义和输出二维点

Point2f p(6, 2);

cout << "[二维点]p“ << p<<endl;

  2.2 定义和输出三维点

 Point3f p3f(8, 2, 0);

cout <<"[三维点]p3f" << p3f << endl;

  2.3 定义和输出基于Mat的std::vector

vector<float> v;

v.push_back(3) ;

v.push_back(5) ;

v.push_back(7) ;

cout << "[基于Mat的vector]v " << Mat[v] <<endl; 

  2.4 定义和输出std::vector点

vector<Point3f> Points(20);

for (size_t i = 0; i < Points.size(); ++i)

     Points[i] = Point2f( (float)(i * 5), (float)(i % 7) );

cout << "[二维点向量]points = " << Points<<endl;

3. 常用数据结构和函数

  3.1 点的表示:Point类

在OpenCV中有如下定义

typedef Point_<int>  Point2i;

typedef Point2i Point;

typedef Point_<float> Point2f;

 Point_<int>、Point2i、Point_<float>互相等价 所以 Point2i、Point、Point2f 互相等价;

Point point ;

point.x = 10;

point.y = 8;

或者:

Point point = Point(10, 8 );

  3.2 颜色的表示:Scalar类

Scalar(a, b, c );

a表示Blue(蓝色)b表示Green(绿色)a表示Red(红色);

  3.3 尺寸的表示:Size类

Size(5, 5 );// 构造出的Size宽度和高度都是5,

  3.4 矩形的表示:Rect类

Rect(x,y,width,height);// 左上角的坐标 矩形的宽、高

最后

以上就是潇洒钢笔为你收集整理的Opencv 学习之路(二)1. Mat结构的使用的全部内容,希望文章能够帮你解决Opencv 学习之路(二)1. Mat结构的使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部