C++基本操作积累

C++基本操作积累

本篇主要为积累自己平时遇到的一些操作,我一般情况下都是需要一个功能,先到网上搜索然后copy。甚至有一些常用函数的应用都要到网上搜索一下才会使用。为了提高写代码的效率,决定记录一下C++中经常会使用到的函数操作。

角点检测

goodfeaturetotrack

矩阵中最大值最小值

minmaxLoc

写文件

ofstream out("filename");//直接覆盖
//ofstream out("filename",ios::app);//不覆盖,接着之前的文件写
out<<要写的内容<<endl;
out.close();//关闭文件

或者

ofstream out;
out.open(filanema);//覆盖
//out.open(filename,ios::app);//接着写
out<<内容<<endl;
out.close();

矩阵初始化1

在类中定义一个Mat类型的变量,且希望对其进行赋值,可以:

Mat cameraMatrixL = (Mat_<double>(3, 3) << 856.5164, 0, 316.4297,
		0, 854.8775, 198.4684, 0, 0, 1);

数据是从左到右赋值给Mat数据的。

Mat ptr

常用形式:mat.ptr<type>(row)[col],访问Mat中的第 r o w row row行中的第 c o l col col列元素。返回类型为模板类型指针,< >中的类型应该与Mat中的数据类型一致。
例如分别读入灰度图片和彩色图片,输出的第一行第二个元素,得到如下 结果

	Mat imgL = imread("teddyQ/im2.ppm", 0);
	Mat imgR = imread("teddyQ/im6.ppm");	
	uchar* data00 = imgL.ptr<uchar>(0);
	uchar* data10 = imgL.ptr<uchar>(1);
	uchar data01 = imgL.ptr<uchar>(0)[1];
	cout << (int)data01 << endl;	
	cv::Vec3b* data000 = imgR.ptr<cv::Vec3b>(0);
	cv::Vec3b* data100 = imgR.ptr<cv::Vec3b>(1);
	cv::Vec3b data001 = imgR.ptr<cv::Vec3b>(0)[1];
	cout << data001 << endl;

在这里插入图片描述
如下代码,指针data00+1相当于在行内(也就是一列一列地)移动

	uchar* data00 = imgL.ptr<uchar>()+1;
	cout << (int)*data00 << endl;
	uchar data01 = imgL.ptr<uchar>(0)[1];
	cout << (int)data01 << endl;
	cv::Vec3b* data000 = imgR.ptr<cv::Vec3b>()+1;
	cv::Vec3b data001 = imgR.ptr<cv::Vec3b>(0)[1];
	cout << *data000 << endl;
	cout << data001 << endl;

输出为:在这里插入图片描述
以上。

访问Mat的元素

访问Mat元素时,无论使用at访问还是使用ptr都需要知道Mat中的元素类型,使用Mat.type()即可得知元素类型
在这里插入图片描述
ref:Mat type()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值