- 博客(38)
- 问答 (1)
- 收藏
- 关注
原创 配置ros环境变量
设置环境变量: echo “source /opt/ros/melodic/setup.bash” >> ~/.bashrc使环境变量生效: source ~/ .bashrc。
2023-08-11 10:42:59
468
原创 libtorch C++ vs2017 debug模式可以正确加载模型,release模式错误
说明一下我的问题,我用下面这行代码来加载训练好的模型,在debug模式下可以正确加载,在release模式下不能正确加载。刚开始我以为是我配置属性表出了问题,反复确认后没有问题,就觉得很奇怪。后来,我发现,由于我没有将libtorch的dll文件放到对应的exe生成目录里,而是直接在环境变量里设置了dll的目录,即lib的路径,所以在环境变量中,debug和release的lib路径顺序先后会影响debug模式或者release模式的运行,比如debug环境变量放在前面,debug模式就能运行,re
2021-09-28 17:13:42
982
2
原创 2021-08-04
QImage的数据宽度自动对齐机制写代码的时候发现,给函数输入了一个541451大小的QImage数据作为形参,但是在函数里通过scanLine逐行遍历QImage的每个像素时发现数据不对劲,然后通过打印QImage.byteCount()发现,这个输入的形参在实际的大小已经成了245344,不是541451=243991,进一步考虑到可能是QImage对数据宽度进行了补齐,计算了一下,发现245344=ceil(541/32)32451,果然,QImage拷贝的时候,将数据宽度自动补齐成了32的倍数。
2021-08-04 15:20:41
151
原创 PCL代码编译过程中出现error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“2” 解决方法
我需要在Debug和release模式下都运行PCL点云处理的代码,但是在Debug模式下运行没有问题,Release模式下运行出现如下这些问题经检查发现,是在release模式下配置项目属性除了问题,问题如下图release模式下,预处理命令不应该添加_DEBUG...
2021-02-20 12:23:52
408
原创 Opencv 提取感兴趣区域 Mat(Rect(const Point2i& p1,const Point2i& p2)) 方法的区间开闭问题
经常使用Opencv的同学们都知道,对于感兴趣区域可以采用如下方法来提取,例如:src是Mat类型数据,p1,p2是感兴趣区域的左上角和右下角的像素点坐标,那么可以通过下面的方法来提取感兴趣区域,如图所示Mat roi=src(Rect(const Point2i& p1,const Point2i& p2));而最终,实际提取的感兴趣区域只包括像素点p1,不包括像素点p2。...
2020-11-10 23:20:52
1553
原创 QT 获取鼠标在窗口中的位置
1、不点击鼠标就获取光标绝对位置的方法QCursor().pos()或者cursor().pos()2、将光标的绝对位置转化为窗口的相对坐标上述两种方法获得的光标位置都是相对于屏幕的全局坐标,为了获得相对于当前窗口的位置,需要用到下面的方法int x=this->mapFromGlobal(QCursor().pos()).x();int y=this->mapFromGlobal(QCursor().pos()).y();...
2020-08-23 11:22:14
12920
原创 剑指offer第三十题
题目描述:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列的和。(子向量的长度至少是1)方法(1),我自己的做法,做法有点奇葩,思路太复杂...
2019-08-26 22:00:24
106
原创 剑指offer第二十九题
题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。思路:这道题目刚开始看到,我就想到了用最大堆来实现,那样的话时间复杂度是O(nlogK),空间复杂度是K。但是后来想想,对实现起来可不简单呀,所以先用了冒泡排序,时间复杂度是O(n*K)。后来为了复习一下堆排序,我有实现了一下堆的思路。代码都如下:(1)对排序的...
2019-08-25 21:50:21
119
原创 剑指offer第二十八题
题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。思路:看到这个题目,我脑子里第一个蹦出来的思路是用树来解决,因为这个题目是要记录键对应的值,记录完了过后再去查找键对应的值。而现成的树就是STL里基于红黑树构建的map容器了。...
2019-08-23 13:46:55
98
原创 剑指offer第二十七题
题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。这是一道非常令人心酸的题目,花了多久就不说了,说了真是丢人。。。。言归正传,这道题目可以用递归的方式来做,怎么递归呢,先来看一下...
2019-08-22 19:48:49
89
转载 二叉树的相关性质
(1)二叉树的度含义是:二叉树的某个结点的子节点或者直接后继节点的个数,1度代表只有一个子节点或者是单子树,2度代表有两个子节点或者是左右子树都有,二叉树是一个连通的无环图,并且每一个顶点的度不大于3。(2)在二叉树中,一棵深度为k,且有2^k-1个节点的二叉树,称为满二叉树。这种树的特点是每一层上的节点数都是最大节点数。(3)在一棵二叉树中,除最后一层外,若其余层都是满的,并且最后一层或者是...
2019-08-21 13:09:38
165
原创 纯虚函数与抽象类
参考转载自:http://c.biancheng.net/view/2299.html1、什么是纯虚函数:在C++中,可以将虚函数声明为纯虚函数,语法格式为:virtual 返回值类型 函数名 (函数参数) = 0;例如:virtual void fight()=0;纯虚函数没有函数体,只有函数声明,在虚函数声明的结尾加上=0,表明此函数为纯虚函数。2、什么是抽象类包含纯虚函数的...
2019-08-21 10:57:25
205
原创 剑指offer第二十六题
题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。思路:对二叉树进行中序遍历,将中序遍历的节点连接起来,问题时中序遍历时,前一个节点容易丢失,所以要拿一个节点来保存上一个节点,并对这个临时节点进行更新。具体代码如下:class Solution {public: TreeNode* Convert(TreeN...
2019-08-20 15:48:09
105
原创 剑指offer第二十五题
题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)思路:(1)在原来的链表每个节点后面添加一个节点,该节点下面连接着原来节点的下一个节点,并且该节点的值与前面连着的这个节点值相同,比如A->B->C,变成A-&...
2019-08-19 22:53:03
89
原创 剑指offer第二十四题
题目描述输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)思路:完成两步:(1)找到符合要求的路径(2)对路径的长度进行排序步骤(1)的思路:对树进行前序遍历,每次遍历节点后,将节点值加入path中,并将expectNumber减去节点的值...
2019-08-18 15:47:19
131
原创 极大似然估计的理解
形象地理解极大似然估计,可以看这篇博客:https://blog.csdn.net/u011058765/article/details/51435502一些例题可以帮助体验一下极大似然估计是怎么求的:https://wenku.baidu.com/view/0d9af6aa172ded630b1cb69a.html...
2019-08-17 11:03:54
273
原创 win10+vs2015配置suitesparse1.3.0
配置suitesparse是配置g2o的前提,我参考了这篇文章进行配置:https://blog.csdn.net/xiamentingtao/article/details/50100549但是这里边有点小错误,我按照里面的步骤再叙述一遍,小错误我会用***粗斜体***指出。1、下载camke,我用的是cmake3.10.12、下载suitesparse1.3.0链接:https://p...
2019-07-25 15:37:58
3517
4
原创 剑指offer第五题
题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。思路:首先,队列的特点是先进先出,栈的特点是先进后出;两个栈,可以在队列push的时候,将数据先存放到stack1中,如果队列需要pop,则先判断stack2是否是空,如果是空,则将stack1弹出,存放到stack2中,并弹出tsack2的top,实现队列的弹出。如果stack2不是空,则直接弹...
2019-07-12 23:06:43
106
原创 剑指offer第四题
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。解题思路:根据前序遍历的特点,前序遍历第一个数是根节点;根据后序遍历的特点,根节点将后序遍历的数组分成左右两个子树;根据同样的道理,每个节点在后序遍历...
2019-07-11 21:01:00
157
原创 PCL调试出现“应用程序无法正常启动(0x000007b)。请单击“确定”关闭应用程序””
出现的问题如下,我这里解决的方案是在“项目——>属性——>调试——>环境”里面添加PATH=KaTeX parse error: Expected 'EOF', got '\bin' at position 11: (PCL_ROOT)\̲b̲i̲n̲;(PCL_ROOT)\3rdParty\FLANN\bin;KaTeX parse error: Expected 'EOF'...
2019-06-09 11:57:14
1783
原创 二叉树深度优先遍历
分为三种方式:前序遍历,中序遍历,后序遍历前序遍历:先对28的节点进行访问,相当于访问左序,输出28;之后访问其左孩子16,输出16;再访问16的左孩子13,输出13;之后访问13的左孩子,没有左孩子;访问13的中序,不输出;再访问13的右序,不输出;再访问16的中序,16有右孩子;访问16的右孩子,子节点22,输出22的值左序;再访问22的中序,不输出;访问22的右序值,...
2019-06-03 10:40:10
211
原创 堆的基本知识
1、堆的定义首先,堆是完全二叉树(二叉树:每个结点有两个子节点),它满足如下性质:(1)任何一个结点都不大于其父结点,这种堆称为大顶堆 或者 任何一个结点都不小于其父结点,这种堆称为小顶堆(2)需要是完全二叉树,最后一层在最左侧2、用数组来存储二叉树首先给二叉树从左至右,从上至下来给每个结点编号,如此编号后,子结点的左结点是父结点的二倍,子结点的右结点是父结点的2倍加1。之后,就可以...
2019-05-24 09:58:02
253
原创 运用归并排序的原理统计数组中逆序对的个数
根据归并排序的思想,在每次归并的时候,需要对划分的两个区域,如下图中的蓝色和黄色区域,然后将temp[i]和temp[j]进行比较,将较小的值(此处对数组进行从小到大排序)存放到原数组arr中在这个归并的过程中,就可以进行逆序对的统计,由于归并时的数组划分的两个区域已经排序完毕,所以数组是有序的,这时,假如temp[i]>temp[j],那么temp[i,mid]这个区间的所有数都大于t...
2019-05-19 12:01:49
537
原创 三路快速排序算法原理 C/C++
书接上文,上次讲到了双路快速排序,双路快速排序是将等于v(标志数)的数也进行交换,从而避免了在处理有大量重复数据的数组分组时的不平衡。而三路快速排序则是将等于v的数也分成一组,同样可以解决上述问题。其原理如下:1、采用随机排序的方法将某个数作为分割数,放在数组开头,该数定义为v。将小于v的一段数组开头的数索引定义为lt,将需要遍历的数组的索引定义为i,将小于v的一段数组的索引定义为gt,数组的开...
2019-05-17 20:06:38
1772
1
原创 双路快速排序算法原理
看了刘宇波的视频,讲双路快速排序的,原理讲的很直观,程序讲解也一看就懂。这里写一下自己的理解过程,也加深一下自己的理解。首先说一下为什么需要双路排序,在有些带有许多重复数据的数组里,使用随机快速排序或者最简单的快速排序算法时,由于重复的数据会放在原来的索引位置不动,就回导致划分数组时划分的某一部分太长,起不到分段排序的效果,这样就导致算法退化成O(n^2)的复杂度。就像下图:为了解决这个问题...
2019-05-14 22:18:42
429
原创 opencv3.3.1 特征匹配时出现的错误及解决办法
在采用surf+knnmatch进行特征匹配的时候,参考了如下这篇博客的代码,https://www.cnblogs.com/skyfsm/p/7401523.html#include "highgui/highgui.hpp" #include "opencv2/nonfree/nonfree.hpp" #include "opencv2/legacy/legacy.hpp"...
2019-04-24 00:32:42
1854
原创 约瑟夫问题求解程序 C++
问题描述:N个人围成一圈,从第一个人开始报数,报到m的人出圈,剩下的人继续从1开始报数,报到m的人出圈;如此往复,直到所有人出圈。(模拟此过程,输出出圈的人的序号)这是写的一种解法,后续可能还会研究一下其他解法,写了再发。// joesphus.cpp : 约瑟夫问题程序解法。//#include "stdafx.h"#include <iostream>using n...
2019-03-27 12:03:37
1276
原创 循环链表的实现 C++
自己写的一个实现循环链表的小程序,功能不是特别多,实现了一些最基本的方法。// circleList.cpp : 实现循环链表//#include "stdafx.h"#include <iostream>using namespace std;//定义节点class Node{public: int data; Node *next;};//创建循环...
2019-03-27 11:01:12
710
原创 搭建大恒水星相机开发环境 及 示例程序的调试 c++
作者所用相机为大恒MER-132-43U3C彩色相机2018年12月的时候调试成功过大恒水星相机,当时是用的vs2013,后来换了编译系统成了vs2015,之前的程序都不能用了。2019年3月26日晚上又搞了三个多小时,才在网上一些大牛成功的基础上,重新调试成果了相机的驱动程序。具体步骤如下:步骤一:搭建编译环境,从本网址下载最新的大恒相机SDK:http://www.daheng-imag...
2019-03-26 22:24:27
3417
2
原创 快慢指针寻找单链表中间值
// FastSearch.cpp : 链表快速查找中间值,快慢指针的方法#include “stdafx.h”#include <stdlib.h>struct LINKLIST{int data;LINKLIST *next;};LINKLIST head = (LINKLIST)malloc(sizeof(LINKLIST));//初始化链表(尾插法)void...
2019-03-19 10:20:18
324
原创 LBP等价模式个数推导
等价模式”被定义为:当某个LBP所对应的循环二进制数从0到1或者从1到0最多有两次跳变时,该LBP所对应的二进制就称为一个等价模式以采样点5个为例跳变0次的情况是: 00000和11111跳变2次的情况是:00001 00010 00100 01000 1000000011 00110 01100 11000 1000100111 01110 11100 11001 10011...
2019-03-12 15:42:25
870
1
转载 Surf算法特征点检测与匹配
Surf算法特征点检测与匹配主要参考一下三个博客:各取所长,一篇不明白可以看另外两篇https://blog.csdn.net/dcrmg/article/details/52601010https://blog.csdn.net/u011460059/article/details/54949200https://www.cnblogs.com/walccott/p/4956857.h...
2019-03-07 23:27:40
905
转载 LBP特征直方图
经过LBP算子的计算后,图像上对应于每个像素都会有一个LBP特征值,如果LBP特征计算时采样点是8个的话,那么LBP特征值的范围也是0~255。也可以表示成一张图像。称之为LBP图谱。如下图所示:上图中,上面一行是原图,下面一行是LBP图谱。可以看到LBP特征的一个优势,就是LBP对光照有很好的鲁棒性但是,在实际应用中,并不使用LBP图谱做特征。对于八采样点的LBP算子来说,特征值范围为0...
2019-03-07 23:26:40
12045
空空如也
将图像畸变矫正后再怎么计算某个像素点的世界坐标
2019-05-09
TA创建的收藏夹 TA关注的收藏夹
TA关注的人