自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 windows下vscode调试虚拟机linux c++工程的三种方法

vscode去远程调试方法有很多种,不同的插件对应了不同的调试方法,比如:1.C/C++插件进行GDB调试(编写launch.json文件)2.C/C++ Runner插件3.CMake Tools插件(只针对CMake工程,需要搭配C/C++插件一起使用,但无需编写launch.json)

2024-04-16 14:03:07 1168 1

原创 Hdevelop编辑器常用功能

【阈值分割】——对应算子threshold通过菜单【可视化】-【工具】-【灰度直方图】打开,打开后选中【变量窗口】的某张图片即可进行灰度直方图分析。刚打开并选中某张图片:调节【最小化】和【最大化】的两个竖线,此时图中绿色部分为分割出的部分(颜色可以通过【颜色】选项修改):【缩放图像灰度】——对应算子scale_image作用:即拉开图像的对比度,让图像中黑的地方更黑,亮的地方更亮。

2024-04-15 18:07:51 151

原创 halcon 3.2标定相机

使用HALCON,您不局限于使用平面校准对象,如HALCON校准板。你可以使用3D校准对象,甚至可以使用任意特征点(自然地标)。唯一的要求是模型点的3D世界位置具有高精度。然后,只需将校准对象所有点(标记)的三维坐标作为参数中的元组传递set_calib_data_calib_object对象的CalibObjDescr。所有点的所有x、y和z坐标都必须以[X,Y,Z]的形式打包在元组中按顺序排列。但是,请注意,如果使用自己的校准对象,则不能使用运算符find_calib_object接口。

2024-04-15 17:48:44 1328

原创 halcon domain和region总结

而图像就是。

2024-04-12 17:25:36 693

原创 工业视觉AI应用总结记录

在工业应用中,一些复杂场景下AI识别用的越来越多了,下面是应用的概念的简单汇总梳理,做记录备份使用。

2024-04-07 18:10:44 425

原创 halcon 中模板匹配与测量工具搭配总结

【代码】halcon 中模板匹配与测量工具搭配总结。

2024-03-22 13:40:16 172

原创 Halcon 3D算子总结整理

对于hom_mat3d_rotate/hom_mat3d_rotate_local等旧轴和新轴的区别,这里用2d下的类似算子进行验证,这样比较直观。对图像先旋转30度,再沿x轴平移100个像素。套用hom_mat2d_rotate_local 和hom_mat2d_translate_local,因为是对新轴进行的,所以平移是按照旋转之后的坐标系沿x平移。套用hom_mat2d_rotate和hom_mat2d_translate,因为是对旧轴进行的,所以平移还是按照之前的图像坐标系平移。

2024-03-18 11:25:40 1363

原创 2D/3D相机手眼标定总结

无需进行相机内参标定,只能识别,属于平面标定,在标定过程中。该算法的核心是,即到的(注意这里并不是RT的刚体变换)。由上篇文章,可知仿射变换的基本公式:有6个自由度,至少需要3组点才能解决,超过3组点,可以用非线性最小二乘优化。uvxy求解后,就可以根据给出的像素点,得到机械手的点坐标,进而可以控制机械手去相应的位置了。

2024-03-04 17:41:40 1018

原创 射影变换的一种解法

按照《计算机视觉中的多视图几何》P430的解释,透视变换是射影映射的一种特殊情况,它最终要的一个性质是:连接对应点的直线,共点。

2024-03-01 09:18:17 818

原创 git 总结整理

当合并分支时,小乌龟git默认使用Fast-forward选项,如下图中将 some feature 分支合并进 master 分支,Git 只需要将 master 分支的指向移动到最后一个 commit 节点上。如果将feature分支合并到dev分支上,记得先将dev合并到feature,然后再合并到dev,这样能避免很多问题。比如:https://zhuanlan.zhihu.com/p/192972614。

2024-02-13 14:30:27 640

原创 ROS2(1)安装

全文基于的实践与总结。

2023-12-28 10:00:00 391

原创 C/C++工程中错误码定义总结

系统一般是按模块划分的,模块与模块之间通过调用与被调用的关系,一般也会划分为多个层次,底层一般对接系统级API或者实现一些算法,上层调用底层的接口来处理业务。那么这些错误码如何定义呢?首先要明白错误码是什么:在笔者看来,错误码分为通用的系统级错误码和业务错误码,系统级错误码一般包括指针为空、内存分配失败、无效参数、超时等等,业务错误码和具体的模块业务有关系。

2023-12-21 23:22:11 1276

原创 相机标定张正友、opencv和halcon对比(1)

说了这么多到底有什么用呢,对于普通镜头,我们可以了解到标定出的焦距其实是主距。而对于其他镜头,我认为关键是初始值的选取,尤其是沙姆标定中,我们可以基于镜头参数,推导出理论初始值进行标定,然后控制标定的结果在理想的范围内是非常关键的。注意这里用的是halcon中的模型转换,opencv中的并没有说明它的模型怎么定义的,但我们用halcon的模型去套用应该也是没问题的。

2023-11-29 16:35:05 1670

原创 halcon 图像拼接

这里关键是concat_obj 和tile_images_offset的搭配使用,前者是一个图像数组,后者将该图像数组中的图像进行排布。需求:将两个图像各裁剪一半,然后拼接到一张图像中。

2023-11-15 13:52:48 372

原创 halcon快速傅里叶变换

低频特征是灰度变化不明显,例如图像整体轮廓,高频特征是图像灰度变化剧烈,如图像边缘和噪声。一个重要的经验结论:低频代表图像整体轮廓,高频代表了图像噪声,中频代表图像边缘、纹理等细节。

2023-11-07 09:53:54 357

原创 vtk编译要点及去除报警窗口

2.选择vs相应版本3. 选择build的项目,这里只选了库4. CMAKE_INSTALL_PREFIX配置5.INSTALL配置,这个在最后的工程中编译Install工程时会拷贝文件到相应目录6.QT相关配置7.再次执行config后报错,然后按提示配置,这里用的是qt5.12,选择版本为58.配置完毕。

2023-10-08 15:38:48 113

原创 gammaray剖析QT程序——如何解析qt版本不同的exe

gamaray

2022-08-18 09:20:33 472 5

原创 vscode c/c++ global插件实现代码跳转

在vscode阅读编写c/c++代码时,体验不是很好,有时候会无法跳转。这里通过GNU Global工具解决这个问题。

2021-03-11 15:11:26 11576 2

原创 ROS(1)安装

目录1. ros安装1.1. 添加源1.2. 添加私钥1.3. 更新软件列表1.4. 安装ros1.5. 初始化1.5.1. 问题11.5.2. 问题21.6. 环境变量配置1.7. 安装rosinstall1.8. 测试小乌龟1.9. 测试rviz1.10. 卸载ros2. 注意注意3. 创建工作空间与功能包3.1. 创建工作空间3.2. 编译工作空间3.3. 设置环境变量3.4. 检查环境变量3.5. 创建功能包3.6. 编译功能包3.7. 编译指定的功能包4. 话题4.1. 发布与订阅4.2. 自定义

2021-01-25 15:18:23 412

原创 ROS(13)cartographer_ros详解(待完善)

11

2021-01-25 14:57:07 198

原创 ROS(12)ROSCostMap2D详解

11

2021-01-25 14:56:28 865

原创 ROS(11)move_base详解

11. move_base详解11.1. move_base配置参数解读参考链接:https://blog.csdn.net/banzhuan133/article/details/90239252https://wenku.baidu.com/view/1ae6d9a56729647d27284b73f242336c1fb9304d.htmlhttps://blog.csdn.net/qq_29313679/article/details/106237063在仿真中,查看turtlebot3_n

2021-01-25 14:55:56 2695 3

原创 ROS(10)turtlebot仿真(利用cartographer_ros)

10. turtlebot仿真(利用cartographer_ros替换karto)参考链接https://blog.csdn.net/qq_34935373/article/details/111991920https://www.freesion.com/article/9794248452/10.1. 官方纯定位Pure localization仿真测试10.1.1. 下载数据集wget -P mnt/e/wsl/cartographer_demo/pureLoc/ https://sto

2021-01-25 14:54:53 397

原创 ROS(9)turtlebot仿真(利用karto)

9. turtlebot仿真(利用karto)参考链接https://blog.csdn.net/qq_40078576/article/details/104773668https://blog.csdn.net/lingchen2348/article/details/795039709.1. 安装Gazebo仿真软件安装ros时已经安装。9.2. 下载Gazobo的模型包不需要再下载模型包了,turtlebot包会加载出模型。9.3. 安装slam建图包turtlebot3支持gma

2021-01-25 14:53:53 826

原创 ROS(8)Navigation安装

8. ROS-Navigation安装官方链接:http://wiki.ros.org/navigation8.1. 安装方式注意,如果通过turtlebot来仿真,当用apt-get安装时它会自动下载导航包。这里因为可能会研究源码,利用源码进行安装。方式一,通过apt-get安装编译好的包;方式二,通过源码编译安装–推荐。会安装如下包:navigation (metapackage) map_server amcl fake_localization voxel_grid co

2021-01-25 14:52:55 5692 5

原创 ROS(7)launch启动文件

7. launch启动文件任何包含两个或两个以上节点的系统都可以利用启动文件来指定和配置需要使用的节点。通常的命名方案是以.launch作为启动文件的后缀,启动文件是XML文件。一般把启动文件存储在取名为launch的目录中。7.1. 指令roslaunch [options] [package] <filename> [arg_name:=value...]roslaunch [options] <filename> [<filename>...] [arg_n

2021-01-25 14:52:02 574

原创 ROS(6)AGV方向-坐标管理系统

6. ros中坐标系管理系统【 原理 】 : 通过tf包的发布功能,可以发布一组坐标之间的转换关系(平移+旋转), 构建一个树形结构,然后通过lookupTransform()接口可以获取任意两个坐标之间的转换关系,不用自己再计算了,强大!!即通过tf广播器广播坐标映射关系,通过tf监听器得到任意两个坐标系之间的关系6.1. 代码解释创建坐标映射 static tf::TransformBroadcaster tfb; tfb.sendTransform(tf::StampedTran

2021-01-25 14:51:36 632

原创 ROS(3~5)话题、服务、参数

3. 话题3.1. 发布与订阅容易理解的是,话题是节点与节点之前通信的一种方式,(服务是节点之间通信的另一种方式)话题与服务的区别是:节点只管投递,数据可能会丢失;服务会有request和response,相当于RPC调用。话题用.msg文件定义数据,服务用.srv文件定义数据代码示例:1、pos_subscriber和velocity_publisher是订阅和发布ros系统已有的一个话题;利用advertise()创建发布者对象。2、person_pubsher和person_sub

2021-01-25 14:50:09 416

原创 ROS(2)工作空间与包

2. 创建工作空间与功能包ros的工作空间是我们开发ros项目的一个工作目录src:代码空间,包含代码、lanuch文件、配置文件等等,是源码所在的目录;build:编译空间,包含编译过程中产生的中间文件;devel:开发空间,编译生成的可执行文件、库等等;install:安装空间,用install命令安装的文件放置的位置(开发基本用不到)。2.1. 创建工作空间mkdir -p ~/catkin_ws/src cd ~/catkin_ws/srccatkin_init_works

2021-01-25 14:48:39 170

原创 记录一次Windows下通过reimp和dlltool转换.lib到.a的过程

背景是这样的:在linux下的一个C++服务由于特殊原因,需要在windows下跑,该工程为cmake搭建,用到了qt的一些基础库,我们想在qtcreator中用mingw来调试运行,其中用到的activemq客户端库原先已经有现成的dll库,只需要转换.lib到.a即可无缝切换。上网查阅资料,步骤很简单,先用exports转出def导出文件,然后用mingw下的dlltool转.a:下...

2019-08-13 21:19:34 5582 1

原创 GDB调试中 如何在so共享库中打断点、保存断点以及加载断点

最近在使用gdb的过程中,需要对so文件进行调试,在这里记录一下调试中的问题及解决方法。如何在so源文件中打断点?首先编译so时需要-g指令。在gdb xxx指令后,发现无法在so对应的源码文件中打断点,break指令找不到so中的类、源文件cpp,这里的方法就是需要在so加载进来后,就可以找到so文件的类名和源文件了,我们可以先run执行一遍,然后Ctrl+C结束,重新打断点即可找...

2019-07-26 14:32:28 8737

原创 windows下vscode安装go插件

1、GIT安装、vscode安装(略)2、GO在win下安装及环境变量配置安装完GO后,创建一个目录作为工作区,如G:\my\project\go,环境变量添加GOPATH并指向该目录。在该目录下创建三个子目录bin、pkg及src。3、配置vscode如果github.com下载太慢,我们可以通过https://gopm.io/download进行下载,速度杠杠的。 ...

2019-07-10 22:36:35 10944 1

原创 git使用记录

摘自廖雪峰论坛整理:https://www.liaoxuefeng.com/wiki/896043488029600git【安装后的一步操作】$ git config --global user.name "Your Name"$ git config --global user.email "[email protected]"【创建版本库】--初始化一个Git仓库,在指定目...

2019-07-07 20:47:46 154

原创 玩转快速排序

通过图例+代码,两种思路、递归非递归方法实现快速排序。

2019-06-20 22:21:26 271

翻译 Redis使用(一):安装

Redis介绍 redis通常用于“数据结构”服务器。它提供了一系列命令集来操作多种数据结构,可以通过“server-client”模式,基于TCP提供简单的协议进行访问。不同的进程可以通过一种共享的方式,查询和修改相同的数据结构对象。 redis实现的数据结构有如下的一些特殊属性:redis可以保存这些数据结构到磁盘,即使它们总是在服务器内存中修改或提供服务,这意味着r...

2019-06-12 21:03:15 118

转载 位运算与取模

(1) 判断int型变量a是奇数还是偶数a&1 = 0 偶数 a&1 = 1 奇数(2) 取int型变量a的第k位 (k=0,1,2……sizeof(int)),即a>>k&1(3) 将int型变量a的第k位清0,即a=a&~(1<<k)(4) 将int型变量a的第k位置1, 即a...

2019-05-29 22:09:04 3167

转载 do{}while(0)用法

linux内核和其他一些开源的代码中,经常会遇到这样的代码:do{ ...}while(0)这样的代码一看就不是一个循环,do..while表面上在这里一点意义都没有,那么为什么要这么用呢?实际上,do{...}while(0)的作用远大于美化你的代码。查了些资料,总结起来这样写主要有以下几点好处:1、辅助定义复杂的宏,避免引用的时候出错:举例来说,假设你需要定义这样一个...

2019-05-29 21:47:34 4700 2

原创 Ubuntu16.04下从零搭建Qt5.9.3+PyQt5+Eric6开发平台

关于Ununtu16.04 1.修改下载源列表,加快下载速度:s1.找到/etc/apt/sources.list并备份:  cp /etc/apt/sources.list /etc/apt/sources.list.baks2.删除sources.list中的内容,修改为下面的内容:deb http://mirrors.ustc.edu.cn/ubuntu/ xenial m...

2018-09-03 19:50:55 1133

原创 OpenCV内存池管理(二)

上一节绘制了基本的Opencv内存池结构,本节着重讲解一下运行的流程,注意没有考虑线程安全。1、三个链表在上一节的图中,有三个主要的链表:①内存池自由链:单向链接的Block区块。②Block区块的私有链:单向链接的区块内释放过的地址链表③通过START和FREE管理的双向链表。2、fastmalloc()流程3、falstfree()流程4、初始化

2016-07-19 22:10:06 815

原创 OpenCV内存池管理(一)

OpenCV提供了一套高效的内存管理方案,提升了内存申请速率,减少了内存碎片,能够很好的提升程序的稳定性,同时支持线程同步。下面是对OpenCV内存管理源码中alloc.cpp的主要函数fastMalloc()和fastFree()的解读研究。

2016-07-17 16:33:24 2088

rosdep.tar.gz

供离线或更新不下来使用,解压后将 meta.cache和sources.cache放到~/.ros/rosdep下面

2021-04-02

空空如也

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

TA关注的人

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