浅谈opencv中的Mat在处理图像数据中的用法
来源:互联网 发布:宁波行知实验小学网站 编辑:程序博客网 时间:2024/05/16 14:21
当下,满大街都在谈机器学习,深度学习,人工智能,大数据,机器视觉,而这些都离不开一些主要的算法,opencv就是这么一个可以应用到工业界的优秀算法实现的库(当然搞算法的第一选择还是matlab工具)。
在mat.hpp文件里有Mat类的定义,在此之前有一大段的注释,就是对该Mat类的用法的最好理解。花点时间研读一下,大有裨益。
Mat类的实现挺复杂但也强大,是使用opencv必须了解的一个重要的类。
n-dimensional dense array class
一个n维的稠密数组类
The class Mat represents an n-dimensional dense numerical single-channel or multi-channel array. It
can be used to store real or complex-valued vectors and matrices, grayscale or color images, voxel
volumes, vector fields, point clouds, tensors, histograms (though, very high-dimensional histograms
may be better stored in a SparseMat ).
Mat这个类代表了一个n维稠密的数值的单通道或多通道的数组。它能被用于存储实数(或复数)数值的向量和矩阵,灰度(或彩色)图像,体素容量,向量场,点云,张量,直方图(尽管很高维的直方图可能最好存放在稀疏矩阵里)。
下面结合一个例子,说明如何对图像数据进行访问。
Mat T = imread("test.png", IMREAD_COLOR);
cout << T.type() << endl;
打印出该图像数据矩阵的类型,比如这里是CV_8UC3表明有3个通道(通常是BGR顺序),每个通道是8位无符号数即unsigned char
在opencv的Mat里,图像数据矩阵中的数据与实际看到的图像的数据是一样的摆放,即都是正的。如何取得某一位置比如i行,j列处的像素数据?
需要用到Vec3b即Vec<uchar, 3>类型
Vec<uchar, 3> pixel = T.at<Vec<unsigned char, 3>>(i,j);
cout << pixel << endl;
这就打印出了图像i行,j列处的像素值。
- 浅谈opencv中的Mat在处理图像数据中的用法
- 访问opencv的Mat中的图像数据
- OpenCV 处理内存中的图像数据
- TXT数据转OpenCV中的Mat数据
- openCV中的Mat、IplImage数据的转换
- opencv存储MAT矩阵中的数据
- Opencv中的Mat类型常用函数数据
- Opencv中的Mat文件在matlab打开
- 利用GDI+在MFC中显示OpenCV中的Mat图像的关键点
- 从RealSense中提取完整的深度和彩色图像,并存在opencv中的Mat里
- opencv-OpenCV中的图像处理 [1]
- opencv中的Mat
- OpenCV中的Mat
- OPENCV中的mat学习
- opencv中的Mat类型
- opencv中的Mat
- OpenCV中的Mat函数
- opencv-OpenCV中的图像处理 [2]-OpenCV中的轮廓
- hdu1032 The 3n + 1 problem
- java中常量和变量
- 拷贝构造
- post请求上传文件和文本时http格式
- Linux基础入门(六) --学习笔记-正则表达式
- 浅谈opencv中的Mat在处理图像数据中的用法
- 153. Find Minimum in Rotated Sorted Array
- 对接钉钉接口可能遇到的问题 50004 60011
- CSU1811-Tree Intersection
- javaweb图书管理系统
- Java编译后产生class文件的命名规则
- C语言 java 判断一个数是不是质数
- 作业1
- 【C++ 异常】error: jump to case label, crosses initialization