opencv|openCV基础知识操作实例

【opencv|openCV基础知识操作实例】在OpenCV中最核心的类是Mat,它是Matrix的缩写,代表矩阵或者数组的意思,该 类的声明在头文件opencv2\core\core.hpp中,所以使用Mat类时要引入该头文件。构造Mat 对象相当于构造了一个矩阵(数组),需要四个基本要素:行数(高)、列数(宽)、 通道数及其数据类型,所以Mat类的构造函数如下:
其中,rows代表矩阵的行数,cols代表矩阵的列数,type代表类型,包括通道数及其 数据类型,可以设置为CV_8UC(n)、CV_8SC(n)、CV_16SC(n)、 CV_16UC(n)、CV_32SC(n)、CV_32FC(n)、CV_64FC(n),其中8U、8S、 16S、16U、32S、32F、64F前面的数字代表Mat中每一个数值所占的bit数,而 1byte=8bit,所以,32F就是占4字节的float类型,64F是占8字节的doule类型,32S是占4字 节的int类型,8U是占1字节的uchar类型,其他的类似;C(n)代表通道数,当n=1时, 即构造单通道矩阵或称二维矩阵,当n>;1时,即构造多通道矩阵即三维矩阵,直观上 就是n个二维矩阵组成的三维矩阵。这里所说的单通道矩阵和二维ndarray是等价的,而 多通道矩阵和三维ndarray是等价的。对于Mat构造函数也可以采用以下形式:
其中使用了OpenCV的Size类,该类一般用来存储矩阵的列数和行数。需要注意的 是,Size的第一个元素是矩阵的列数(宽),第二个元素是矩阵的行数(高),即先存 宽,再存高,与ndarray的shape相反。
opencv|openCV基础知识操作实例
文章图片

#include #include //包含openCV的基本数据结构,数组操作的基本函数#include //图像的交互界面,视频的捕捉也可写为#include #include //图像的变换,滤波直方图,以及形状的描述等函数库using namespace std; using namespace cv; int main(char argc, char* argv[]){ //构造矩阵 Mat m = (Mat_(3, 2) << 11, 12, 33, 43, 53, 63); //矩阵的行数 cout << "行数:" << m.rows << endl; //矩阵的列数 cout << "列数:" << m.cols << endl; Size size = m.size(); cout << "尺寸" << size << endl; //使用成员函数size()获取矩阵的尺寸 //除以上可以单独获得Mat的行数和列数外,还可以通过成员函数size()直接得到矩 阵尺寸的Size对象, cout << "通道数:" << m.channels() << endl; cout << "面积:" << m.total() << endl; cout << "维数:" << m.dims << endl; cout << "输出数值" << endl; for (int r = 0; r < m.rows; r++) { for (int c = 0; c < m.cols; c++) { cout << m.at(r, c) << ","; //第r行,第c列 } cout << endl; } cout << endl; return 0; **![在这里插入图片描述](https://img-blog.csdnimg.cn/20200105141713515.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDIxMjA2NQ==,size_16,color_FFFFFF,t_70)

    推荐阅读