opencv24.9学习_创建矩阵并给矩阵幅值的几种方法
来源:互联网 发布:一建做题软件电脑版 编辑:程序博客网 时间:2024/06/08 04:51
该部分主要讲解Mat类矩阵的创建并通过不同的方式来初始化。
#include<opencv2\opencv.hpp>#include<highgui\highgui.hpp>using namespace std;using namespace cv;int main(){ Mat image=imread("D:\1.jpg",1); /* M(2,2,CV_8SC3,Scalar(0,0,255));前面两个2表示矩阵的行和列, 第三个参数:CV_[The number of bits per item][Signed or Unsigned][Type Prefix]C[The channel number] 如CV_8SC3:8表示八位,s表示signed,c表示char,3表示3个通道。 Scalar:一个含有四个元素的向量,在这里用于给M赋值。 Scalar中的元素个数应该与通道数保持一致,若不止一致,将会根据通道数选取scalar的前几个,如果通道数大于scalar中的元素,空的通道将为0; */ Mat M(2,2,CV_8SC(3),Scalar(0,0,255)); cout<<"M="<<endl<<""<<M<<endl<<endl; /* 下面两行程序是讲解怎么定义超过2维的矩阵。 L(3,sz, CV_8UC(1), Scalar::all(0));中的3指定了维度, sz数组指定了每个维度的尺寸(the size for each dimension),其他的参数意思不变。 */ int sz[3] = {2,2,2}; Mat L(3,sz, CV_8UC(1), Scalar::all(0)); //cout<<L<<endl<<endl; M.create(4,4,CV_8SC3); cout<<"M="<<endl<<""<<M<<endl; Mat E=Mat::eye(4,4,CV_64F); cout << "E = "<< endl << " " << E << endl << endl; Mat C=(Mat_<double>(3,3)<<0,-1,0,-1,5,-1,0,-1,0); cout << "C = " << endl << " " << C << endl ; Mat R = Mat(3, 2, CV_8UC3); randu(R,Scalar::all(0),Scalar::all(255)); /* format函数用于控制矩阵在命令行的输出格式 format(R,"python")按照变成原因Python的格式输出 其他的表示按照相应的编程语言输出 */ cout<<"R="<<R<<endl; cout<<"R(python=)"<<format(R,"python")<<endl; cout<<"R(CSV)="<<format(R,"csv")<<endl; cout << "R (numpy) = " << endl << format(R,"numpy" ) << endl ; Point2f P(5,6); cout << "Point (2D) = " << P.x << endl ; Point3f P3f(2,5,6); cout << "Point (3D) = " << P3f << endl ; /* 1.vector中push_back函数的意思是在vector的末尾插入一个元素。 2.vector简单理解为动态一维数组push_back作用是在这个一维数组尾部插入一个元素 vector<int> v; v.push_back(1); //v里面是: 1 v.push_back(2); //v里面是: 1 , 2 v.push_back(3); //v里面是: 1 , 2 , 3。 */ vector<float> v; v.push_back((float)CV_PI);v.push_back(2);v.push_back(3.01f); cout << "Vector of floats via Mat = " << Mat(v) << endl << endl; /* 1、 size_t:它是一个与机器相关的unsigned int类型,其大小足以保证存储内存中对象的大小。 它是一种“整型”类型,里面保存的是一个整数,就像int, long那样。这种整数用来记录一个大小(size)。 size_t的全称应该是size type,就是说“一种用来记录大小的数据类型”。 size_t size=sizeof(i);//用sizeof操作得到变量i的类型的大小 实验发现采用int代替size_t也可以取得同样的效果。 2、 vector<Point2f>是声明意思不是太懂,通过查论坛和看程序结果,应该是下面的意思: vector是可变数组,stl的一种,也就是大小可变的数组,vector<Point>是point数据类型的集合, 简单讲就是很多point的集合。vector<int>,就是存放int变量,类似于int a[10]或者int* a, 但是vector里边存放变量的个数不限。 比如程序中的vector<Point2f> vPoints(20); vPoints(20)中存放的其实是20个Point2f型的点,Point2f有两个值, 所以 vPoints(20)总共有40个值,如果 vPoints(20)中存放的其实是20个Point3f型的点,Point3f有3个值, 所以 vPoints(20)总共有60个值. */ vector<Point2f> vPoints(20); for (size_t i = 0; i < vPoints.size(); ++i) { vPoints[i]=Point2f((float)(i*5),(float)(i%7)); } cout << "A vector of 2D Points = " << vPoints << endl <<endl;}
0 0
- opencv24.9学习_创建矩阵并给矩阵幅值的几种方法
- 定义矩阵的几种方法
- 接受外来图片数据,创建Mat矩阵的几种方法
- OpenCv学习笔记(五)--创建Mat矩阵对象常用的几种方式
- 土地利用转移矩阵生成的几种方法
- 顺时针旋转矩阵90°的几种方法
- Matlab中创建一个矩阵的3种常用方法
- opencv获取矩阵某位置元素值的几种简便方法
- MATLAB中创建矩阵的方法
- 网络中常用的几种矩阵
- 常见的几种矩阵分解方式
- 常见的几种矩阵分解方式
- 常见的几种矩阵分解方式
- 几种常用的矩阵范数
- 常见的几种矩阵分解方式
- 矩阵_矩阵运算
- MATLAB矩阵的创建
- 矩阵的创建
- RED5与tomcat整合
- 论企业信息化之六:业务架构
- IOS UI-UIView
- BZOJ 3261 最大异或和 可持久化Trie
- Android控件构架
- opencv24.9学习_创建矩阵并给矩阵幅值的几种方法
- bzoj1084[SCOI2005]最大子矩阵
- HDU 2050 折线分割平面(DP)
- libsvm3.21在MATLAB2014a的安装应用之二:LibSVM基本应用
- Linux下安装JDK配置环境
- 程序员生存定律:打造属于自己的稀缺性
- 《算法竞赛入门经典2ndEdition 》例题5-5 集合栈计算机(The SetStack Computer, Uva12096)
- 跑批利器--示例
- 数据库高级查询题目集