一、opencv命名空间
众所周知的是C++有一个最常用的命名空间std,常见的输入输出和回车cin、cout和endl都依赖于此。
opencv中的类和函数都是定义在命名空间cv之内的,跟C++一样有两种方式可以访问。第一种是在代码的开头加上using namespace cv
,另一种是在使用opencv类个函数时加上cv::
,比如cv::imread()
。不过第二种方式每使用一个函数都需要打出命名空间,相对麻烦。所以比较第一种方式。
所以我一般在写程序时,都会加上
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;
二、Mat数据类型
cv::Mat类是用于保存图像以及其他矩阵数据的数据结构。默认情况下,其尺寸为0,我们也可以指定初始尺寸,比如,比如定义一个Mat类对象,就要写cv::Mat pic(320,640,cv::Scalar(100));
MAT几个基本数据类型:
Mat();
Mat(int rows, int cols, int type);
Mat(Size size, int type);
Mat(Size size, int type, const Scalar& s);
Mat(int rows, int cols, int type, const Scalar& s);
rows:行
cols:列
size:参考二维数组size(cols, rows)的大小创建构造函数,和的行数
列数按照相反的顺序。
type:CV_8UC1、CV_64FC4等
Scalar: Scalar是一个4通道数组,一般用来给Mat对象赋值,第四个通道的值都默认为0。
typedef struct Scalar
{