C++
Quentin_HIT
哈工大研二学生,视觉SLAM/视觉定位/多传感器融合定位方向,不定期分享一些学习笔记和心得。
展开
-
【C++】利用getline方法分割字符串
利用getline方法分割字符串原创 2023-02-08 15:12:37 · 1470 阅读 · 0 评论 -
【C++】利用OpenCV库读取yaml文件
【代码】【C++】利用OpenCV库读取yaml文件。原创 2022-11-24 12:46:01 · 1227 阅读 · 0 评论 -
【C++】关于数组是否可以使用负数下标
我们知道,数组的第一个元素下标是 0。数组的范围也就是从array[0]到 array[size-1]。 但实际上C++支持正负下标。 负下标必须在数组边界内;否则结果不可预知。 以下代码显示了正数组和负数组下标:C++代码#include <iostream> using namespace std; int main() { int intArray[1024]; for (int i = 0, j = 0; i < 1024; i++)转载 2022-05-04 15:00:53 · 1791 阅读 · 0 评论 -
【C++】unordered_set中find()用法及代码示例
unordered_set::find()函数是C++ STL中的内置函数,用于在容器中搜索元素。如果找到指定元素,它返回元素的迭代器,如果找不到指定元素,则返回指向unordered_set::end()的迭代器。用法:unordered_set_name.find(key)参数:此函数接受必需的参数键,该键指定要搜索的元素。返回值:返回找到元素的迭代器,否则返回指向unordered_set末尾的迭代器。以下示例程序旨在说明unordered_set::find()函数:示例1:#inc原创 2022-04-30 13:19:21 · 12355 阅读 · 0 评论 -
【C++】派生类赋值运算符的写法
假设baseDMA是基类,hasDMA是由baseDMA得到的派生类。假设基类baseDMA的复制构造函数有如下形式:baseDMA & baseDMA::operator=(const baseDMA & rs){ if (this == &rs) return *this; delete [] label; label = new char[std::strlen(rs.label) + 1]; std::strcpy(lab原创 2022-03-05 19:40:01 · 882 阅读 · 1 评论 -
【C++】隐式类型转换的风险举例及使用explict的必要性
隐式转换的风险隐式转换的风险一般存在于自定义的类构造函数中。 按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象。如:class String{public: String (const char* p); // 用 C 风格的字符串p作为初始化值}...String s1 = "hello"; // OK 隐式转换,等价于 String s1 = String("hello")但是有时可能原创 2022-02-27 13:03:25 · 673 阅读 · 0 评论 -
【C++】内联函数与宏定义的区别
内联函数内联函数和常规函数一样,也是按值来传递参数的。例如,如果参数为表达式,如4.5+7.5,则函数将传递表达式的值(这里为12)。#include <iostream>inline double square(double x) { return x * x; }int main(){ using namespace std; double a, b; double c = 13.0; a = square(5.0); b = squa原创 2022-02-19 15:24:04 · 446 阅读 · 0 评论 -
【C++】for循环中带冒号(:)用法简介
基本用法正常我们想要输出一个数组的全部元素时,需要采用以下的方法://随机定义的数组int array[10] = { 54, 23, 78, 9, 15, 18, 63, 33, 87, 66 };for (int i = 0; i < 10; i++) { cout << array[i] << " "; //输出:54 23 78 9 15 18 63 33 87 66}在C++11中,我们可以在for循环添加冒号 : 来简化这一过程://随机定义的转载 2022-01-29 13:18:42 · 5340 阅读 · 0 评论 -
【OpenCV】OpenCV/C++利用RANSAC算法减少SIFT特征误匹配
#include "opencv2/nonfree/nonfree.hpp" #include "opencv2/nonfree/features2d.hpp" #include "opencv2/legacy/legacy.hpp"#include <opencv2/opencv.hpp>#include <iostream> using namespace cv; using namespace std; int main() { ..原创 2021-11-16 11:59:29 · 2168 阅读 · 2 评论 -
【OpenCV】OpenCV-C++自己编写函数实现单应性矩阵求解findHomograph和单应性变换warpPerspective
1. 文档结构及相关说明输入图片为src.jpg(待校正图像,待校正目标的四对点需要使用Photoshop等软件预提取)和dst.jpg(利用扫描全能王等得到的校正后的图像,用于提供校正后的图像尺寸),如下所示:src.jpgdst.jpg输出结果见以下帖子(直接调用OpenCV现成函数findHomography和warpPerspective):OpenCV-C++实现单应性矩阵的求解_Quentin的博客-CSDN博客2. 代码实现myfindHomograp...原创 2021-11-03 16:30:59 · 3293 阅读 · 4 评论 -
OpenCV-C++实现单应性矩阵的求解
1. 单应性矩阵的理解1.1 图像层面单应性矩阵H(Homography)约束了同一3D空间点在两个像素平面的2D齐次坐标。\[\left[ \begin{matrix} {{u}_{a}} \\ {{v}_{a}} \\ 1 \\\end{matrix} \right]=\left[ \begin{matrix} {{H}_{1}} & {{H}_{2}} & {{H}_{3}} \\ {{H}_{4}} & {{H}_{5}} &...原创 2021-10-06 17:07:38 · 5767 阅读 · 2 评论 -
OpenCV-C++实现图片信噪比SNR及均方误差MSE的计算
题目读入一幅摄像头图像,记为I 向图像加入高斯噪声,噪声的灰度要和图像的灰度在一个相当的水平上,记为J 计算图像I和J的均方误差 计算图像J的信噪比思路1. 高斯噪声的产生本文是采用Box-Muller算法实现高斯分布的,而要借助Box-Muller算法产生高斯分布必须要有现成的均与分布随机数。由rand()函数可以产生介于0 至 RAND_MAX的随机数。因此,若要得到[0,1]的随机数,则可使用rand() * (1.0 / RAND_MAX)Box-Mulle.原创 2021-10-03 16:45:27 · 7133 阅读 · 0 评论 -
【C++】自己编写函数实现Vector部分功能
写在前面该题目源于哈工大竞技机器人队视觉组暑期培训,感觉很有意思,决定放在博客上留存。题目动手实现Vector,要求如下: 自己动手实现一个泛型的动态数组,并实现Vector中的部分操作:push_back、pop_back、.at、[]、clear和复制构造函数。要求构造和析构正确。(注意是动态数组,所以要求不能直接使用普通的定长数组或者链表实现)要求main中有该类对象的调用。 对上述的程序添加预编译命令,使得其在DEBUG阶段加入一些调试信息...原创 2021-09-09 18:29:48 · 905 阅读 · 0 评论 -
【C++】数组指针和指针数组的区别
数组指针(也称行指针)定义: int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。p=a; //将该二维数组的首地址赋给p,也就是a[0]或&a[0]...原创 2021-08-25 14:09:34 · 488 阅读 · 0 评论 -
【C++】VSCode配置C++编译环境(Windows10)
写在前面:本文适用于Windows10操作系统下。编译器选择是的TDM-GCC,内容详细。目录第一步:下载VSCode第二步:安装相关插件第三步:下载编译器第四步:配置VSCode第五步:验证第一步:下载VSCode打开官网链接,点击Download for Windows下载并安装VSCode。第二步:安装相关插件第三步:下载编译器本人用的是TDM-GCC编译器。打开TDM-GCC官网链接下载一个安...原创 2021-08-25 14:01:43 · 1632 阅读 · 1 评论