c++
文章平均质量分 68
wx_polish
广东工业大学2020级研究生,目前研究方向为三维建图,立体视觉等。
展开
-
持续更新:OpenMVS中的各种问题:c++语法;代码对应的具体意义
前言:这个文档记录的内容是OpenMVS代码里面碰到的问题,大致可以分成两类:一类是变态的c++语法,另一类是OpenMVS里面一些代码对应的具体意义。文档将会以问答的形式进行记录。———————————————————————————————————————————————————————c++语法问题:1.“ASSERT(imagesMap[idx] != NO_ID)”似乎是一个判断语句,背后具体是怎么封装起来的?解:2.点进NO_ID的宏定义是“DECLARE_NO_INDEX(uint原创 2021-05-14 11:04:02 · 628 阅读 · 2 评论 -
ubuntu16.04下安装understand
1.下载understand的安装包安装包从CSDN中获取(0积分):就是我上传的资源解压到目录下,进入bin/linux64的文件下,执行./understand,密钥: 09E58CD1FB792.制作启动器现在实际上已经可以运行understand了,但是每次都只能命令号来打开understand。这样也太麻烦了,我们得给他弄个启动器,让他像平常的软件一样,可以直接鼠标打开。打开命令行:cd /usr/share/applicationsgedit创建一个understa原创 2021-04-27 15:37:28 · 1578 阅读 · 9 评论 -
c++ 向子函数传递数组
向子函数传递一个数组时,数组是不会被拷贝的,一般来说都是传地址给子函数而已。怎么规范地向子函数传递数组呢,一般来说,我们会给定数组地址,然后告诉子函数数组的长度之类的。利用函数模板,可以实现不需告诉子函数数组长度,也能安全地使用数组,使用的是非类型模板参数,编译器根据你给定的非类型模板参数,自行推断出对应的数组长度,这个方法更具有普适性。下面是向子函数传递数组的几个基本用法:#include <iostream>using namespace std;int test1(const原创 2020-10-31 10:59:27 · 2595 阅读 · 0 评论 -
opencv扩充图像边缘函数:cv::copyMakeBorder中的参数borderType显示无定义
copyMakeBorder(Mat src, Mat dst, int top, int bottom, int left, int right, int borderType, Scalar value)borderType是要告诉函数,我要扩充边缘是什么样子的,填充什么东西进去,例如最常用的填充常值,或者在边缘处镜像等操作。我在Linux中跑的时候,显示我要用的BORDER_CONSTANT(填充常值)没有定义,十分纳闷,于是打算百度BORDER_CONSTANT对应的int值。下面是各个typ原创 2020-10-26 19:36:11 · 588 阅读 · 0 评论 -
slam十四讲中关于unordered_map的使用
#记录一下:unordered_map本质上是一个类似于vector的容器,但是不同在于他使用哈希算法来帮助储存检索容器中的数据,比普通的顺序排列读取效率更高。也因为使用了哈希算法,unordered_map比vector多了一个东东——<key, value>键值对。为什么要键值对呢?具体要看看哈希算法的原理。哈希算法可以看看这个,关于哈希算法的一系列解析文章:http://www.nowamagic.net/academy/detail/3008010(这个网站有不少有意思的文章)原创 2020-10-13 19:33:31 · 170 阅读 · 0 评论 -
#记录一下:图像旋转的公式推导
#记录一下:图像旋转的公式推导https://blog.csdn.net/liyuan02/article/details/6750828原创 2020-10-05 16:40:41 · 296 阅读 · 0 评论 -
slam十四讲ch8中遇到的c++小问题:fin>>time_rgb>>rgb_file>>time_depth>>depth_file;
有不懂的代码:ifstream fin( associate_file ); if ( !fin ) { cerr<<"I cann't find associate.txt!"<<endl; return 1; }string rgb_file, depth_file, time_rgb, time_depth; list< cv::Point2f > keypoints; // 因为要删除原创 2020-09-25 15:20:25 · 435 阅读 · 0 评论 -
#记录一下:slam十四讲g2o的高端分析
#记录一下计算机视觉life的文章,关于g2o的详细分析。参考博文:https://mp.weixin.qq.com/s/j9h9lT14jCu-VvEPHQhtBw原创 2020-09-24 11:04:33 · 147 阅读 · 0 评论 -
slam十四讲遇到的问题:模板与类/结构体的组合使用
#记录一下template <int _PoseDim, int _LandmarkDim> struct BlockSolverTraits { static const int PoseDim = _PoseDim; static const int LandmarkDim = _LandmarkDim; typedef Eigen::Matrix<double, PoseDim, PoseDim, Eigen::ColMajor> PoseMa原创 2020-09-19 15:56:59 · 250 阅读 · 0 评论 -
slam十四讲中遇到的c++问题:typedef typename Traits::PoseMatrixType PoseMatrixType;
问题:这是什么意思typedef typename Traits::PoseMatrixType PoseMatrixType;解释:使用typedef将旧类型Traits::PoseMatrixType简化定义为一个新的类型PoseMatrixType。typename的作用是告诉编译器 Traits::PoseMatrixType 是一个类型,不是一个变量或者函数。这是因为编译器在最开始并不能判断 Traits::PoseMatrixType 是 Traits 命名空间中的函数、变量还是类型,原创 2020-09-19 11:03:54 · 285 阅读 · 0 评论 -
slam十四讲中遇到的小问题,关于keypoints类和matches类:keypoints_1[m.queryIdx]
代码如下:vector<KeyPoint> keypoints_1, keypoints_2;vector<DMatch> matches;find_feature_matches ( img_1, img_2, keypoints_1, keypoints_2, matches );cout<<"一共找到了"<<matches.size() <<"组匹配点"<<endl;for ( DMatch m:matches ){原创 2020-09-17 20:57:10 · 1415 阅读 · 0 评论 -
slam十四讲ch7中,DMatch类中的queryIdx和trainIdx
由于是在ch7中的pose_estimation_3d2d遇到的问题,因此我直接在pose_estimation_3d2d文件中添加测试代码,测试代码可以放在最后应该也可以,就是图个方便… /*************test*************/ cout << "test_start:" << endl ; Mat my_img1=img_1.clone(); Mat my_img2=img_2.clone(); int img1_原创 2020-09-17 20:42:59 · 5470 阅读 · 1 评论 -
slam十四讲ch7中的pose_estimation_3d2d报错:error while loading shared libraries: libg2o_core.so: cannot open
pose_estimation_3d2d中显示错误的代码段为初始化g2o中的片段: // 初始化g2o typedef g2o::BlockSolver< g2o::BlockSolverTraits<6,3> > Block; // pose 维度为 6, landmark 维度为 3 Block::LinearSolverType* linearSolver = new g2o::LinearSolverCSparse<Block::PoseMat原创 2020-09-17 16:13:16 · 970 阅读 · 1 评论 -
Mat_<double> ( 3,3 )是什么意思
#记录一下问题:Mat_< double > ( 3,3 )是什么?来源是slam十四讲里面遇到的这样一段代码,不明觉厉…Mat t_x = ( Mat_<double> ( 3,3 ) << 0, -t.at<double> ( 2,0 ), t.at<double> ( 1,0 ), t.at<double> (原创 2020-08-31 14:49:11 · 4537 阅读 · 1 评论 -
slam十四讲,ch7的一些解答
#记录一下:遇到的问题:编译pose_estimation_2d2d.cpp时, 报错:CV_FM_8POINT was not declared in this scope解决方法:将CV_去掉再编译就可以通过。参考博文:https://blog.csdn.net/qq_38629044/article/details/96907844#3_2d2dcpp_CV_FM_8POINT__was_not_declared_in_this_scope_18...原创 2020-08-30 14:04:30 · 868 阅读 · 0 评论 -
ubuntu16.04安装ROS的速度很慢
#记录一下安装ROS,先得设置源source,设置密钥key,更新Ubuntu的软件库,然后进行ROS的安装。但是在安装ROS安装的这一步会非常慢,原因是第一步中,从那个源上获得资源的速度很慢。因此只要找到一个下载速度快的源就能解决这个问题。换成清华大学的ROS源,即可解决:sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release原创 2020-08-14 17:32:10 · 1146 阅读 · 0 评论 -
SLAM十四讲,第七章程序ch7报错, error: ‘CV_LOAD_IMAGE_COLOR’ was not declared in this scope
问题如下:因为slam十四讲中使用opencv3.1,本人使用的是opencv4.4,因此在编译时,报错找不到 CV_LOAD_IMAGE_COLOR 这个定义,解决方法如下:1.在百度上搜这个问题的解决方法时,百度经验提示,在使用了CV_LOAD_IMAGE_COLOR这个定义的c文件下,添加如下头文件:#include <opencv2/imgcodecs/imgcodecs_c.h> 2.添加之后仍然报错,打开imgcodecs_c.h 文件后发现,里面有如下代码:#error原创 2020-08-06 20:05:56 · 15552 阅读 · 20 评论 -
在结构体里定义一个函数后,在函数后面添加冒号等一系列操作
#记录一下提出问题:SLAM十四讲里面看到,在结构体里定义一个函数后,在函数后面添加冒号,以及一系列操作…不明觉厉struct CURVE_FITTING_COST{ CURVE_FITTING_COST ( double x, double y ) : _x ( x ), _y ( y ) {} // 残差的计算 template <typename T> //template:可以做到不同类型的变量,若执行同样的操作,只写一个函数就ok了。在实际中,将原创 2020-08-02 18:55:42 · 789 阅读 · 5 评论