Mat类简单用法(一)
来源:互联网 发布:import java 编辑:程序博客网 时间:2024/06/11 04:17
小白一枚~ 以下是自己在学习过程中见到的Mat的一些用法,记录一下(注:前面有解释的后面不再解释啦~):
首先是定义Mat型时的一些:
1. Mat::Mat(int rows, int cols, int type)
rows:矩阵行数
cols:矩阵列数
type:CV_8UC1(8位 uchar型 (channel)1通道) 类似可以定义些CV_32FC3.说明:CV_(位数)+(数据类型)+(通道 数)
#include<iostream>#include<opencv/highgui.h>using namespace std;using namespace cv;int main(int argc,char**argv){ Mat A(3,2,CV_8UC1);//一通道 Mat B(3,2,CV_32FC3);//三通道 cout<<"A="<<A<<endl; cout<<"B="<<B<<endl; }
输出为:
A=[ 0, 0;
0, 0;
0, 0]
B=[0, 0, 0, 0, 0, 0;
0, 0, 0, 0, 0, 0;
0, 0, 0, 0, 0, 0]
2. Mat::Mat(Size size, int type)
Size:矩阵大小 //可以用别的图像的大小也可以自定Size(width,heighth)
#include<iostream>#include<opencv/highgui.h>using namespace std;using namespace cv;int main(int argc,char**argv){ Mat A(3,2,CV_8UC1);//一通道 Mat B(A.size(),CV_32FC3); //以A的大小定义 cout<<"B="<<B<<endl; }
输出为:
B=[0, 0, 0, 0, 0, 0;
0, 0, 0, 0, 0, 0;
0, 0, 0, 0, 0, 0]
3.:Mat sampleMat = (Mat_< float>(1, 2) << num1, num2);
这是定义类一个一行两列的内容为float类型的矩阵,并且将num1,num2这两个数赋给矩阵
#include<iostream>#include<opencv/highgui.h>using namespace std;using namespace cv;int main(int argc,char**argv){ float num1=2; float num2=4; Mat sampleMat = (Mat_<float>(1, 2) << num1, num2); cout<<"sampleMat="<<sampleMat<<endl; }
输出如下:sampleMat=[2, 4]
4.:Mat DataMat(1, 2, CV_32FC1, &a[i][0]);
此处假设a[i][2]。则定义了个一行两列的矩阵,类型为32位浮点型单通道,然后将a[i][0],a[i][1]的值赋给了矩阵。
5.:MatLab中的常用矩阵定义:
零矩阵:cv::Mat::zeros(rows,cols,type)
one矩阵:cv::Mat::ones(rows,cols,type)
单位矩阵:cv::Mat::eye(rows,cols,type)
#include<iostream>#include<opencv/highgui.h>using namespace std;using namespace cv;int main(int argc,char**argv){ Mat A=Mat::zeros(5,5,CV_8UC1); Mat B=Mat::ones(5,5,CV_8UC1); Mat C=Mat::eye(5,5,CV_8UC1); cout<<"A="<<A<<endl; cout<<"B="<<B<<endl; cout<<"C="<<C<<endl; }
输出如下:
A=[ 0, 0, 0, 0, 0; 0, 0, 0, 0, 0; 0, 0, 0, 0, 0; 0, 0, 0, 0, 0; 0, 0, 0, 0, 0]B=[ 1, 1, 1, 1, 1; 1, 1, 1, 1, 1; 1, 1, 1, 1, 1; 1, 1, 1, 1, 1; 1, 1, 1, 1, 1]C=[ 1, 0, 0, 0, 0; 0, 1, 0, 0, 0; 0, 0, 1, 0, 0; 0, 0, 0, 1, 0; 0, 0, 0, 0, 1]
6.:Mat B:B.row(i)取一行
#include<iostream>#include<opencv/highgui.h>using namespace std;using namespace cv;int main(int argc,char**argv){ Mat B=Mat::ones(5,5,CV_8UC1); Mat A=Mat::eye(5,5,CV_8UC1); cout<<"B的第一列:"<<B.row(1)<<endl; cout<<"A的第一行:"<<A.col(1)<<endl;}
输出:
B的第一列:[ 1, 1, 1, 1, 1]
A的第一行:[ 0;
1;
0;
0;
0]
其次是使用时的一些:
1.运用已有Mat型result转化成其他类型
Mat result;//将result转化成32FC3型保存至resultf中Mat resultf;result.convertTo(resultf,CV_32FC3)
2.作为绘制模板时(定义0矩阵)
Mat output=Mat::zeros(img.rows,img.cols,CV_8UC3)
3.克隆(复制)其他图片
Mat srcImage=imread("1.jpg");Mat copyImage=srcImage.clone(); //完全复制Mat image1(srcImage) ;//仅是创建了Mat的头部分,image1与srcImage共享数据区 Mat image1 = srcImage ;//仅是创建了Mat的头部分,image1与srcImage共享数据区 Mat copyImage2;srcImage.copyTo(copyImage2);//完全复制
- Mat类简单用法(一)
- Mat类详解(一)
- opencv Mat类用法
- opencv学习(一)之Mat类
- OpenCv cv::Mat类用法
- Mat类的一些用法
- 【opencv3】 Mat类用法总结
- OpenCV学习笔记(04):Mat类详解(一)
- OpenCV参考手册之Mat类详解(一)
- OpenCV参考手册之Mat类详解(一)
- OpenCV参考手册之Mat类详解(一)
- OpenCV参考手册之Mat类详解(一)
- OpenCV参考手册之Mat类详解(一)
- OpenCV参考手册之Mat类详解(一)
- Opencv学习笔记:Mat类详解(一)
- OpenCV参考手册之Mat类详解(一)
- 计算机视觉之OpenCV教程 ---Mat类基础(一)
- git的一些简单用法(一)
- css 文本超出添加省略号
- K:java枚举的常见用法
- 创建动画
- leetcode 448. Find All Numbers Disappeared in an Array
- C2065'not_equal_to': undeclared identifier
- Mat类简单用法(一)
- Android内存泄漏优化总结
- HDU
- 手把手教你如何玩转SSM(Spring+SpringMVC+Mybatis)
- win10下安装Ubuntu后,启动时没有win10选项解决方法
- fatal error C1051: program database file
- 使用Markdown实现页内跳转
- Ordering Pizza(贪心)
- 【机房收费系统】——登录窗体