Opencv中Mat数组相关应用
来源:互联网 发布:免费域名邮箱申请 编辑:程序博客网 时间:2024/06/17 16:35
今天读取opencv中的Mat数组,已经被打败,真的是类型不对就读不出内容啊,真的要崩溃,故特此记录一下。
1、首先了解一下Mat中对应的各个类型
在opencv中像素点的数据类型能找到对应类似char,int,float,double的,比如说是分别为CV_8UC1,CV_16UC1,CV_32FC1, CV_64FC1,一定要注意是没有这一说法的CV_16FC1。
当Mat中数据的类型为CV_16UC1的时候,这里的16U并不是指unsigned int,而是指的是unsigned short int,因为在OpenCV框架中,int不是16位的,而是32位的
2、创建mat数组
<span style="font-size:14px;">Mat matpixel(rows, cols, types, Scalar(0));例如:Mat matpixel(src.rows*src.cols, 2, CV_16UC1, Scalar(0));</span>
3、取值:
Mat读元素值得代码为:
//对于一个数据类型为type的Mat a来说 type temp = a.at<type>(x,y);当采用这种方法取元素值得时候,type成为一个麻烦的问题,因为一般我们生成Mat的时候,都是这样的:
Mat a; a.create(Size(x,y), CV_8UC1);而取元素值时不能写成"a.at<CV_8UC1>(x,y)"或者"a.at<a.type()>(x,y)"。
所以这里列出OpenCV中定义的型别和C++中型别的对应关系,
CV_8SC1 -> char
CV_8UC1 -> unsigned char
CV_16SC1 -> short
CV_16UC1 -> unsigned short
CV_32SC1 -> int
CV_32FC1 -> float
CV_64FC1 -> double
OpenCv中的数据型别命名规则为:CV_(比特数)+(数据类型)+(Channel数),我们也可以直接根据命名规则得到相应的数据型别。
下面举例:
CV_16UC1类型的数据,访问像素(i,j)img.at<ushort>(i,j)即可。
若不知道所属的属性,则可以通过转变数据类型进行获取值。本人一般喜欢转为double型,代码如下:Mat dta;//位置其数据类型 Mat data = cv::Mat_<double>(_data);//数据类型转换为doubleint N = data.rows;int D = data.cols;/// meanMat m = Mat::zeros(1, D, data.type());//如果想新建一个相同数据类型的数组,使用type()即可for (int j = 0; j<D; j++){for (int i = 0; i<N; i++){m.at<double>(0, j) += data.at<double>(i, j);}}
对于保存图片的Mat来说,下面给出读取Mat中数据的例子:
//对于单通道图像 //0表示读取的灰度图像(彩色图像将转换成灰度图像) Mat image_C1 = imread ( "lena.jpg", 0 ); uchar elem = image_C1.at<uchar>( x, y ); //对于彩色图像 Mat image_C3 = imread ( "lena.jpg" ); Vec3b elem_3 = image_C3.at<Vec3b>(x,y); //里面包含三个元素:elem_3.val[0]、elem_3.val[1]、elem_3.val[2]
0 0
- Opencv中Mat数组相关应用
- Opencv 中Mat相关
- Opencv中数据结构Mat的相关属性
- opencv中Mat的各种相关操作
- opencv中Mat数据类型的应用
- opencv中Mat和数组赋值的几种方法
- opencv mat相关资料整理
- OpenCV 中cv::Mat 和 IplImage 的转换与应用
- OpenCV中Mat赋值
- opencv中Mat使用
- OpenCV中Mat数据结构
- opencv中Mat介绍
- opencv中Mat使用
- OpenCV中Mat详解
- opencv 数组转换为mat
- OpenCV中Mat类型格式
- OpenCV中 IplImage 与 Mat
- opencv中mat的push_back。
- maven项目由于多个依赖中含有同一个jar包导致的冲突问题的解决办法
- 算法学习之路——算法书籍
- 如何完美卸载office
- node js 对cookie的操作
- vps搭建(转载)
- Opencv中Mat数组相关应用
- 基于Angular-animate.js和css实现的轮播图
- mnist
- Spring boot 集成 aop 配置
- 10进制和62进制相互转换
- 洛谷 P1759 通天之潜水
- HTML与XHTML之间的区别
- IPC机制
- iOS客户端是否接收推送的设置