自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(80)
  • 资源 (1)
  • 收藏
  • 关注

原创 Ubuntu 22.04 WiFi图标丢失 network unclaimed

wifi图标消失,network UNCLAIMED

2023-06-01 11:44:21 3288

原创 双目测距误差评估

双目测距误差计算

2023-04-14 21:28:04 414 1

原创 ros rviz显示rosbag中的图像和imu数据

如何使用rviz显示rosbag中的图像和imu数据

2022-06-10 18:34:30 5359 1

原创 Ubuntu18.04上下载安装使用sogou输入法

下载地址:搜狗输入法Linux官网-首页安装设置网址:搜狗输入法Linux官网-安装指导这样Ubuntu下工作就更加方便了。

2022-05-27 16:09:38 328

原创 运行svo 2.0的 vio时遇到opencv冲突的问题

当我运行如下指令时,遇到了如下问题指令cd svo_wssource ./devel/setup.bashroslaunch svo_ros euroc_vio_mono.launchrosbag play MH_01_easy.bag -s 50运行时遇到的问题OpenCV Error: Bad argument (Unknown interpolation method) in resize, file /build/opencv-L2vuMj/opencv-3.2.0+dfs

2022-05-11 18:08:22 1328 1

原创 使用realsense t265测试svo2.0视觉里程计

毕业三年了,现在是第二份工作,第一份工作已经结束一年半了,这意味着,我有一年半的时间没有搞视觉SLAM相关的东西了,虽然在第二份工作也是做视觉相关的,但是只是用到一些目标识别和跟踪的知识,并锻炼了一下工程实现能力,编程能力,一直是我的一块心病,哈哈,由此可见我不用适合做程序员,至少不会是出色的程序员,但是这毕竟是我一个比较靠谱的职业,他可以让我生活的更好一些,所以,我还是在不断坚持,我去面试视觉SLAM岗位,面试官都会问,你有没有做过什么改进,可笑的是,我只是对一些开源的视觉SLAM代码熟悉一些而已。但是不

2022-05-10 17:17:59 2373 3

原创 根据相机内参进行图像去畸变

cv::Mat img;cv::Mat img_undistort;double fx,fy, cx, cy, k1, k2, p1, p2, k3;for(int v = 0; v < img.rows; v++){ for(int u = 0; u < img.cols; u++){ //根据内参数,计算归一化坐标系下的坐标点 double x = (u-cx)/fx; double y = (v-cy)/fy; double r.

2022-03-03 10:22:55 871

原创 通过指针便利图像元素

for (size_t y = 0; y < image.rows; y++) { //row_ptr为第y行的头指针, unsigned char* row_ptr = image.ptr<unsigned char>(y); for (size_t x = 0; x < image.cols; x++) { //data_ptr: 指向待访问像素 unsigned char* data_ptr = &row_ptr[x*image.channels]; .

2022-03-02 11:12:14 211

原创 如何将cv::Mat类型转换为imgui中的ImTextureID类型

背景: 我原来的工程是使用opencv的,所以程序中的图像都是表示为cv::Mat类型,为了能够在imgui窗口中显示我的cv::Mat的图像,我找到了下面这个函数:

2021-06-11 16:35:26 1159 2

原创 创建一个最简单的imgui测试用例

在上一篇文章中,我们初步认识了一下imgui,并且成功运行了他提供的demo。这只是开始学习imgui的第一步,在实际使用时,我们需要将imgui应用到自己的工程中去,所以你需要具备将imgui加到你工程中去的能力,...

2021-06-11 10:15:57 4202

原创 运行imgui例程

背景:目前在做一个视觉测试系统,需要做一个界面,将相机获取的图像,以及测试过程中的数据呈现在界面上,在我印象里,做界面就用qt吧,直到这个月真要开始做界面了,我的领导给我建议用imgui做界面,这个...

2021-06-10 19:30:04 6328 2

原创 VS2017 C++工程 执行python脚本

背景:最近参与一些测试工作,希望测试结束后能够根据测试得到的数据和图像自动生成测试报告,最开始调研到了生成报告的库有libharu和libpdf,libharu是开源库但是很久没有人维护了,libpdf商业使用需要授权,为了...

2021-06-01 14:10:22 382 1

原创 相机和镜头选型需要注意哪些问题

背景:最近需要优于项目需求需要对工业相机和镜头进行选型,于是我就开启的学习相机之旅,虽然我一直在做机器视觉方向,但是我对相机的了解还是很少,我想正好趁这次机会好好学习一下。如果有错误的观点请指正。一、相机相关的一些指标1. 靶面尺寸 相机的靶面尺寸就是用于接收光信号的传感器的尺寸,业界规定在描述靶面尺寸时1英寸=16毫米(当然实际情况下1英寸=25.4mm)。相机的靶面尺寸是用靶面对角线的长度与16mm的比值表示的,如对角线为4mm的靶面尺寸为1/4”,然后根据4:3的长边短边比,利...

2021-05-26 17:57:46 11029 2

原创 opencv图像仿射变换和普通旋转

背景:今天需要对程序生成的图像进行旋转90度和下采样操作,当然还有改变图像类型的操作,就是把原来.png的图像转换为.jpg的图像,主要是我目前使用libharu库,无法成功从本地加载png图像到pdf中去,不得不使用jpg图像。我的图像是横向的,为了能够更大的呈现在pdf中,我需要将图像旋转90度,得到竖向的图像。我最初使用的方法是这样的cv::Mat temp, dest;cv::Mat img1 = cv::imread("dancer.png"); cv::imshow("o.

2021-05-13 11:43:12 185

原创 win10上编译libharu库

背景:最近的项目需要自动的生成pdf文件,我在网上查看相关的资料,发现目前比较流行的生成pdf文件的库有两个,一个是libpdf,另一个是libharu。libpdf个人使用时免费的但是商业使用就需要收费了,否则得到的pdf上有水印。有人说libpdf要比libharu好用,因为libharu需要自己编译,但是考虑到节约成本,我想我应该先尝试一下libharu库,然后再做决定。 首先是要编译libharu库,我看了好几篇文章,感觉说的都不很清楚,操作性不强,后来无意间发现了这篇文章(ht...

2021-04-25 19:07:57 1302

原创 图像去畸变和添加畸变

背景:最近的项目中用到的图像去畸变的知识,刚开始是直接调用opencv中提供的函数cv::initUndistortRectifyMap()和cv::remap()函数,实现图像的全局去畸变,但是由于图像的分辨率很高,再加上,实际过程中我们只用到了很小一块的图像,所以为了降低电脑的负担,则想选用局部图像去畸变的方法来代替全局图像去畸变。于是我想到了《SLAM十四讲》书中在相机模型中有相关的去畸变的代码,我就直接使用测试了,效果还不错。void LocalZoneUndistortion(cv::M

2021-04-13 15:54:25 4385 2

原创 开始使用gitlab

不得不说,我真不是一个合格的程序猿,工作马上两年了,github和gitlab用的一点也不熟练,每次兴致来了就搞几下,可是每次都浅尝辄止,不求甚解,时间一长,上一次练习的步骤就都记不起来了,所以只能再次开搞。新公司快转正了,我负责的代码工程也越来越大了,公司的gitlab要使用起来,提高效率,所以今天就彻底的搞懂流程,多练习几遍。第一种:在gitlab上创建一个新的project第一步:在gitlab上创建一个project.我最开始在Visibility level中选择的是Private,但

2021-02-22 15:02:51 256

原创 神奇的事情--长见识了

背景:我的这个工程里有多个命名空间,之所以是这样是因为,有一个跟踪算法他本身有几个namespace,然后我在他的基础上进行整合代码,将其作为一个功能接口,供其他函数调用,我在整合代码时,将我新加的类放在一个新的namespace中。所以我在namespace中添加了class FDSSTTracker,,我是这样调用的,刚开始,这里 FDSST是我新创建的namespace, 我需要在System类中初始化FDSSTTracker的指针对象,FDSSTTracker* mpFdsster

2021-01-21 18:25:12 116

原创 C++中的类加多线程代码修炼之二

背景:在上一篇文章中 写到了我第一次使用C++使用多个类多个线程进行编程,由于是第一接手“这么大一个工程”,所以还是要有个参照物的,由于我呢之前好几年一直在看的一个C++代码工程就是ORB-SLAM了,这个工程使用C++语言,工程内有三个线程,多个类,代码风格很好,通俗易懂,有很多值得我借鉴和学习的地方,所以我就按照ORB-SLAM工程的思路来组织我的代码。前情回顾:我首先创建了四个类:(1). Capturing类主要专注于相机相关的操作,比如相机的初始化,图像获取,开始,暂停等。(2).

2021-01-21 15:00:03 359

原创 C++中public protected private的区别

1. 不考虑继承关系时 本类方法使用 外部使用 private 是 否 protected 是 否 public 是 是 2. 有继承关系时 子类方法使用 外部 private 否 否 protected 是 否 public 是 是 结论:基于以上两个表格可以知道,C++中的protected处于private和public中间, protected 既保护了...

2021-01-20 14:08:16 131

原创 Sleep() sleep() usleep()

Linux:sleep(n); //停留n秒usleep(n); //停留n微秒Windows:Sleep(n); //停留n毫秒

2021-01-20 10:07:19 193

原创 C++中的类加多线程代码修炼

背景:现在在做一个目标跟踪的项目,需要实时的从工业相机中获取图像,然后再跟踪图像上的目标物,由于起初为了测试跟踪算法,就把“从相机获取图像”和“跟踪处理”都放在了主线程中,在实际测试时,直接从相机获取图像时,跟踪处理部分帧率出现周期性卡顿的问题,而直接读取本地的视频数据时跟踪部分帧率很稳。因为“获取图像”和“跟踪处理”在一个线程中,所以两者是一条线上的蚂蚱,要快都快,要慢都满,所以我没必要在帧率测试上花时间了,另外考虑到,相机应该单独出来,一个是将一些相机的操作封装到一个类里面,另外需要将他放在一个线程中去

2021-01-19 18:43:58 367 1

原创 ‘(‘:illegal token on right side of ‘::‘

背景:想整理升级一下代码,添加了两个类,再一编译代码,出现了好多这样的错误提示“'(':illegal token on right side of '::'”,我很纳闷这是啥问题,我就使用“注释法”来定位出错的位置,我发现把所有的我新添加的代码都注释掉了,这个问题还在,只好百度了,最终解决了问题。1. 出现错误的原因:函数模板max与Visual C++中的全局宏max冲突。2. 解决方法:设置项目属性,在预定义处理器中添加定义NOMINMAX来禁止使用Vsual C++的min/max宏定义。

2021-01-19 15:14:40 1302

原创 使用python从csv文件中读入两列拟合直线

背景:要判断跟踪算法在控制目标物走直线的情况下跟踪的轨迹是否为直线,我保存下来跟踪算法跟踪到的目标的中心点在图像上的像素位置,然后拟合出穿过这些点的直线,然后计算这些点距离直线的平均距离来判断跟踪的精度。(这个是不是要考虑,虽然我们控制让目标物走直线,但是这种控制精度高吗,或者说,他自己走着走着,轨迹会发生偏移,这需要有一个参照物,比如让扫地机沿着地板砖缝隙走)主要是使用python读取csv数据def readfile(filename): with open(filename, 'r'

2021-01-13 14:12:57 1058

原创 玩转带外触发的单目相机之一

背景:去年开始研究vins,但是只是用了普通的相机,然后将IMU和相机粘在一起,然后就是联合标定相机和IMU。VINS使用的相机是带有外触发的,还进行了相机和IMU的硬件时间同步。当时我特别想买个带外触发的相机,一直没找到资源,后来一个我在深蓝学院上课认识的小伙伴,去年保研到深大,目前读研一,我工作学习中的好多问题都是请教他才解决的,我认为一个还没大学毕业的学生,达到这个程度已经很厉害了,在这里感谢我的这位小伙伴,我还一直不知道他的名字。后来他给我发过一个淘宝链接,7rJjtcHixxed打kaἲtaӦ

2021-01-07 22:19:55 830 9

原创 windows下安装python和Python-opencv

背景:目前基于python的图像处理和机器视觉的研究还挺多,最近不是在研究目标检测和目标跟踪的算法,由于检测和跟踪的环境比较简单所以从不带学习的跟踪方法,在搜索资料时搜到这个网站,是对opencv中的目标跟踪算法的一个汇总,对比,个人感觉还是不错的,https://www.pyimagesearch.com/2018/07/30/opencv-object-tracking/ 这个是一个英文网站,当然也有很多中文的,是从英文翻译过去的,如果英语能力可以的话,还是看英文的,我想下载代码和测试视频,为啥还需要.

2020-12-25 11:51:22 167

原创 深度图压缩之-高低8位拆分保存

使用kinect相机保存数据,为了减少保存的数据集量,对图像进行压缩。将彩色图像直接压缩成.mp4格式,此时图像上的一些高频信息会被损失掉。为了能够让深度图有比较高的保真度,减少深度图上高频信息的损失,我们将16位的深度图,分成高8位和第8位,将低8位保存成mp4视频的形式将高8位直接保存成单通道的深度图。下面的函数实现了将一幅CV_16UC1类型的深度图拆分成高8位和低8位,并且将低8位的数据写入三通道的图像中,便于压缩为mp4格式。int depth2HighLow(cv::Mat .

2020-11-10 20:04:51 892

原创 windows下配置opencv

我的windows下是使用的一个镜像安装的vs2015,然后在vs上编译工程需要使用opencv时,需要在工程中配置opencv新建一个C++工程,按照下面的步骤进行配置。设置opencv的环境变量“此电脑”右键点击“属性”-->选择“高级系统设置”-->选择“高级”-->选择“环境变量”-->选择“Path”-->点击“编辑”-->添加“bin路径”第一步:左键选中“项目”-->右键选择“属性”-->点击“VC++目录”-->点

2020-11-10 19:29:28 175

原创 旋转三维平面与某一坐标平面平行

在上一篇文章(https://blog.csdn.net/weixin_38636815/article/details/109495227)中我写了如何使用ceres,根据一系列的点来拟合一个平面,很难保证ORB-SLAM输出的轨迹严格与某一个坐标平面平行,所以这篇文章我我将说一下,如何将不与任何一个坐标平面平行的三维平面绕着一个轴,旋转一个角度,使得其与某一个坐标平面平行。一、原理分析实现步骤:1. 获得拟合出的平面的法向量2. 找到参考向量,如要与XOY平面平行,参考向量为(0,0

2020-11-07 11:29:05 5679 2

原创 ceres学习之平面拟合

背景:orb-slam2最终保存的轨迹形成的平面是一个倾斜的,这个与相机初始化位置有关,但是有些时候,我们需要的是一个2d的轨迹的试图,直接将轨迹向某一个平面投影的话。得到的估计是失真的,所以我们需要对轨迹的location数据进行处理,就是首先拟合出轨迹的平面,然后将这个平面绕着一个轴,旋转一定的角度,将其旋转成与某一个做表面平行,然后再取出其中两个维度的坐标,那么我们就可以得到一个真是的2d平面。为实现上面的目的,第一步工作就是要根据输入的坐标数据,3d坐标点,拟合出一个主平面,使用ceres

2020-11-04 17:45:46 1388 1

原创 ceres-solver学习笔记

前一段时间总有一个想法,那就是,我只直到视觉slam是远远不够的,激光slam仍然是一个比较稳妥的技术,好落地,应用广泛,我想着,如果我学会了会大大增加自己的核心竞争力,所以我抽时间开始看关于激光slam和无人驾驶的相关内容,我也只是看个大概,由于没有项目支撑,所以我理解和明白的,接触的东西非常有限,由于没有很强的外部驱动力,我的进度很慢,并且学习质量也很差,代码看不下去,就这样陷入的恶性循环,我开始迷茫,感觉自己到达了瓶颈期,但又明白,我必须尽快的突破它,要不然结果很不好。之前的想法就是从宏观上把控自

2020-09-27 11:32:26 438

原创 The key arguments setting in BundleFusion_Ubuntu_Pangolin

Recently, we get a better version of BundleFusion which can work on ubuntu, and the real time reconstruction result is presented through pangolin window. I think it is outstanding is beacuse I can only feed it with original color and depth images without g

2020-09-22 16:43:33 251 8

原创 BundleFusion_Ubuntu_Pangolin failed to save Mesh

When all images including color images and depth images have been used out to reconstruction, then I click saveMesh button in the bellow pangolin window to save the dense map data saved as .ply file. But I will always face the "segmentation fault" error, .

2020-09-22 14:15:53 373

原创 BundleFusion_Ubuntu_Pangolin usage

Yestoday, I found the project of bundlefusion-ubuntu-pangolin, I have worked on the old version of bundlefusion build in windlows. At first, I not used to work with windows system, and with respect to bundlefusion I have to transform my color, depth image,

2020-09-18 16:22:01 617

原创 Debug Your Code with VScode on Ubuntu

1. click the fourth button shaped as a triangle and you will see the launch.json file located in the .vscode document in your source projection.2. This is one of my .json file. You can see that I only changed two parts of it. The first one is "program...

2020-09-18 15:20:10 137

原创 Ubuntu16.04上安装kitti2bag

kitti2bag是一个可以将kitti数据集转换为bag文件的工具,可以直接通过pip进行安装。由于kitti2bag中使用到ros,所以安装时你使用的python版本应该是2.7的因为ros只有在Python2.7时才能正常工作。比如说我,我安装了conda,在conda中安装的python是3.7版本的,所以我需要先conda deactivate之后,才能安装。我刚开始只是按照大多数的博客上所说的步骤进行安装sudo pip install kitti2bag使用上面这条指令可以成功的

2020-09-03 10:44:42 897 1

原创 cartographer学习笔记--如何保存cartagrapher_ros建好的地图

今天开始跟着网友大佬学习cartographer.1. 如何保存cartographer的地图数据在运行cartographer过程中可以随时保存建好的地图,步骤如下:首先是重新打开一个terminal, 如果你没有将你的cartographer_ros下的setup.bash文件写入到.bashrc中,那你重新打开一个terminal就需要重新source一下你的setup.bash文件,否则会出错,有安装conda的小伙伴,也要确定是否需要关闭当前conda环境,因为ros依赖的Python

2020-08-31 15:56:27 1758

原创 ubuntu16.04 + ros-kinetic 配置cartographer

其实一直以来都感觉纯视觉SLAM很难落地产品,所以一直在找机会学习激光slam,之前也在深蓝学院上买了一个激光salm的课程,惭愧,至今也没开始学呢,年底之前,我想工作之余研究一下激光slam和ros,我感觉这两个东西对我来说很重要,所以这两天先抽时间把google的cartographer工程配置了一下,期间也遇到了一些问题,不过我逐一解决,最终配置成功。接下来就开始研究激光slam技术,以及cartographer的代码。希望能帮上和我一起想开始学习cartographer的小伙伴,如果有什么问题,可以

2020-08-29 18:24:04 664

原创 evo实用指令指南

下面这篇文章中有比较具体的关于evo的安装以及使用的介绍,其中一点很重要,就是可以把euroc形式的.csv的轨迹格式转换为tum格式的轨迹。https://zhuanlan.zhihu.com/p/88223106#singleevo_traj tum orb_slam2_tum.txt --ref=tum_groundtruth.txt -p --plot_mode=xy --correct_scale --alignevo_traj tum orb_slam2_kitti.txt --r.

2020-08-26 10:54:51 487

原创 BundleFusion代码框架讲解

背景:前面用了几篇文章来记录和总结了,我在研究bundlefusion过程中遇到的一些问题以及解决方法,本来想实现给bundlefusion输入先验轨迹,然后让其根据给定的轨迹进行重建,这样即便在环境比较恶劣的情况下,也可以使用给定的位姿完成重建任务,但是这段时间对bundlefusion有了新的认识,意识到这件事没有我想象的那么简单。bundlefusion的研究工作就要告一段落了,所以最后我对bundlefusion做一个大的总结,把网络上一些经典的文章,整合起来。一、 首先是先明白bundlefu

2020-08-06 17:23:23 5282 15

相机镜头MTF.pdf

镜头的空间分辨率解释

2021-05-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除