对OpenCV中矩阵Mat的小分析
来源:互联网 发布:mac沙盒游戏 编辑:程序博客网 时间:2024/04/28 12:26
OpenCV中经常要进行对矩阵的操作,Mat是OpenCV中存储矩阵的类型,其包含在opencv/cv.h头文件下,其最简单的赋值操作为:
double a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
cv::Mat m(3, 4, CV_64F, a);
这里建立了一个3行4列的矩阵m,元素类型为CV_64F,注意在声明其大小的时候是按照先行后列的顺序赋值,另外,a中元素的类型与矩阵元素的类型应该对应(这里都是double),否则不能正常取值。
现在的问题是,想要取得m中特定行列数的元素,应该如何操作?
OpenCV提供了at函数,可以解决该问题,使用at的方法如下:
此处的matGet2D为自定义函数,功能是根据元素类型利用at函数获取矩阵中的元素,按照上面的写法,返回值r应为矩阵m中第0行、第2列的元素:3double r = matGet2D(m, 0, 2);<pre name="code" class="cpp">double matGet2D(cv::Mat m, int row, int col){ int type = m.type(); switch(type) { case CV_8U: return m.at<uchar>(row,col); break; case CV_8S: return m.at<schar>(row,col); break; case CV_16U: return m.at<ushort>(row,col); break; case CV_16S: return m.at<short>(row,col); break; case CV_32S: return m.at<int>(row,col); break; case CV_32F: return m.at<float>(row,col); break; case CV_64F: return m.at<double>(row,col); break; }}
经测试,r=3,符合预期。这说明at函数的参数也是按照先行后列的原则排列的。而在图像处理领域,由图片转换而来的矩阵,其x轴对应图片宽度,y轴对应图片高度,因此x对应列数,而y对应行数,利用at函数获取(x,y)点像素值时应写成at(y,x)。
0 0
- 对OpenCV中矩阵Mat的小分析
- Opencv中对Mat矩阵的简单操作(菜鸟级别)
- OpenCv:Mat矩阵的初始化
- OpenCv矩阵(Mat)的构造
- Opencv Mat 矩阵的运算
- opencv Mat子矩阵赋值小tip
- OpenCV中构造Mat矩阵赋值和复制的…
- Mat矩阵中指针操作的小陷阱
- OpenCV中矩阵类详解之一:Mat
- Opencv中如何保存Mat矩阵
- OpenCV中矩阵类详解之一:Mat
- OpenCV中矩阵类详解之一:Mat
- OpenCV中访问Mat图像像素的一个小技巧
- Opencv中对矩阵的操作
- opencv 中对矩阵的排序例子
- opencv 保存mat矩阵的数据
- opencv Mat矩阵的“深浅”复制
- OpenCV图像矩阵Mat的基本操作
- 堆和栈的区别详解
- Fatal error: Call to a member function read() on a non-object in 错误解决方法
- 给技术高管日常管理的五条小建议
- Android学习(1)——Intent Flag介绍 intent.addFlags()
- js 程序执行与顺序实现详解
- 对OpenCV中矩阵Mat的小分析
- Android 去除标题栏的方法
- C# 文件与二进制互转数据库写入读出
- STM32F429ZGT6使用SDRAM
- 如何在 AutoLayout 中使用 UIScrollView (多个ContentView)
- insert多行数据在mysql/oracle的实现
- LeetCode Binary Tree Inorder Traversal
- 牛腩发布系统--在HTML中引入CSS
- robotium gridview获取子view方法(笔记)