自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 使用Azure Kinect Body骨骼构造SMPL三维人体模型

1.SMPL模型简介SMPL是通过参数控制的人体模型,可控制的参数为Pose和Shape。总共有24个关节点,模型及关节索引如下图。每个关节通过一个旋转向量控制,如下图为手动控制关节点4绕Z轴旋转90度、关节点19绕Y轴旋转90度的结果。旋转控制的是如果再绕关节点17旋转-90度,则...

2020-06-03 16:36:03 11149 47

原创 ROS2(三)使用colcon编译package

当colcon编译成功后,会自动生成对应install文件夹,其中包含setup.sh文件,在使用编译的库或者程序前,都需要将其路径加入到环境变量中,在install文件夹下运行如下命令。如果不需要编译某个package时,只需要在其对应的文件夹下创建一个名称为COLCON_IGNORE的空文件,则该文件则不会被编译。在安装ros2时,如果按照官方指导操作应该是已经安装了colcon,可以使用命令。ROS的工作空间是有固定的结构的。,里面放置ROS package的源代码。工作空间目录下一定要有一个。

2023-04-20 22:54:30 2049

原创 编译livox ros driver2(ROS2、livox、rviz、ubuntu22.04)

官方地址:https://github.com/Livox-SDK/Livox-SDK2执行一下命令: 如上就安装完成了Livox-SDK2,会安装如下内容: 如需删除,执行如下命令:2.编译livox_ros_driver2官方地址:https://github.com/Livox-SDK/livox_ros_driver2打开终端执行如下命令,会将源代码clone在/home/ws_livox/src/livox_ros_driver2目录下,这步创建了ROS2需要使用的工作空间。

2023-04-20 16:55:12 4969 4

原创 ROS 2(二)熟悉ROS 2的使用和工具(turtlesim\ros2\rqt)

Turtlesim是一个用于学习ROS 2的轻量级模拟器。它说明了ROS 2在最基本的层面上所做的事情,便于了解以后如何处理真实的机器人或机器人模拟。ros2工具方便用户管理ROS系统、与ROS系统交互使用的。可以使用它来启动节点、设置参数、收听主题等。rqt 是 ROS 2 的图形用户界面(GUI)工具。rqt中所做的一切都可以在命令行上完成,但rqt提供了一种更用户友好的方式来操作ROS2元素。2.1.安装Turtlesim首先是。

2023-04-04 23:01:29 1017

原创 LIO-Livox(一)简介及框架

节点中的类从点云中提取角特征、表面特征、不规则特征。节点的主线程目的是估计传感器位姿,其他在Estimator类中的线程使用MapManager构建并管理特征地图。

2023-04-04 14:07:27 2082 4

原创 ROS 2(一)开发环境搭建(Ubuntu22.04、ROS2 Humble)

根据官方指导,搭建ROS2 Humble开发环境。

2023-03-30 16:44:19 1850

原创 Qt控件退出全屏后比例失调问题解决(多窗口视频全屏及平均分屏)

1. 问题描述在编写多视频窗口qt软件时,需要可以全屏某一个视频窗口的操作,全屏之后又可以恢复正常多窗口均匀分布。但经过gridLayout自动调节后会出现全屏之后比例失调问题。如下所示:初始化窗口均匀分布:通过隐藏其他窗口setHidden(true),实现当前窗口全屏。通过将所有控件setHidden(false),恢复多窗口。默认情况下,会出现比例失调现象。2. 问题解决视频控件包含在gridLayout中。2.1. 全屏操作将其他需要隐藏的控件setHidd...

2022-02-25 11:03:42 2481

原创 Ubuntu使用Qt编译qsqlmysql

1. 说明Qt下载安装完成之后,没有自带MySQL的库,必须通过Qt源代码编译.现象是Qt使用MySQL时会报错:Driver not loaded Driver not loaded实际上是缺少:/opt/Qt5.14.2/5.14.2/gcc_64/plugins/sqldrivers/libqsqlmysql.so本文章记录使用Qt的编译过程.前提1:已经安装了mysqlsudo apt-get install mysql-serversudo apt-

2022-02-22 14:19:32 1072 2

原创 QtCreator发布软件时自动复制文件或文件夹

1.背景当使用QtCreator发布软件时,有时需要同时发布一些配置文件等。可以通过手动拷贝方式复制到发布的软件根目录下,但是这样必须手动操作拷贝,麻烦且容易遗忘。因此最好将需要发布的附件自动发布到待发布的软件根目录下。2.自动复制文件或文件夹在.pro文件中增加配置。如下:#配置中增加文件拷贝选项CONFIG += file_copies#定义需要增加的文件# $$PWD表示工程源代码所在目录# $$OUT_PWD表示发布软件坐在目录# .files规定文件名或文件夹名

2021-11-30 14:02:35 1100

原创 UML详细讲解

1.UML概述1.1.什么是UML统一建模语言(UML)是一种通用的可视化建模语言,可以用来描述、可视化、构造和文档化软件密集型系统的各种工件。UML是独立于过程的,它适用于各种软件开发方法、软件生命周期的各个阶段、各种应用领域以及各种开发工具。注:UML不是一种程序设计语言,其描述的模型可以和各种编程语言相联系。1.2.UML的目标为建模者提供可用的、富有表达力的、可视化的建模语言,以开发和交换有意义的模型。 提供可扩展性和特殊化机制以延伸核心概念。 支持独立于编程语言和开发过

2021-10-09 17:09:40 30372 1

原创 基于YoloV4的车辆检测跟踪系统(跟踪准确率大于99%)

1.结果展示系统采用YoloV4检测车辆目标,对有效车辆检测框进行跟踪匹配,检测结果示意图如下:检测结果视频为:基于YoloV4的车辆检测跟踪系统_哔哩哔哩_bilibili基于YoloV4的车辆检测跟踪系统2.系统工作流程工作流程图如下:检测跟踪系统性能:经测试在白天高速公路场景下跟踪准确率≥99%。夜间测试结果后续补齐。最耗时环节为YoloV4对图像进行目标检测的环节,不同显卡性能的耗时不同,详细可查yolov4的各平台测试。跟踪环节仅采用简单的基于检测框的..

2021-09-15 20:51:52 4332 6

原创 Qt 图片鼠标滚轮放缩、鼠标拖动平移、单击选点(附工程及源代码)

1.最终效果Qt 图片交互——鼠标滚轮放缩、拖拽、选点2.核心代码说明技术路线为:基于QGraphicsView,使用scale函数执行放缩,使用centerOn(mapToScene(QPoint))执行平移,将QImage转化为QPixmap绘制在QGraphicsPixmapItem上。头文件与源代码均是完整的,可以直接集成到工程中实用。2.1.头文件#ifndef HI_GRAPHICSVIEW_H#define HI_GRAPHICSVIEW_H#includ

2021-08-16 15:57:02 7099 15

原创 Qt Event(Qt事件)

1.事件定义事件(event)是由系统或者 Qt 本身在不同的时刻发出的。当用户按下鼠标,敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件。一些事件是在对用户操作做出响应的时候发出,如键盘事件等;另一些事件则是由系统自动发出,如计时器事件。2.事件与信号槽一般来说,使用 Qt 编程时,我们并不会把主要精力放在事件上,因为在 Qt 中,需要我们关心的事件总会发出一个信号。比如,我们关心的是 QPushButton 的鼠标点击,但我们不需要关心这个鼠标点击事件,而是关心它的 clicked(

2021-06-10 11:00:23 7560 3

原创 Qt Ubuntu 修改系统时间(系统授时)

1.准备事项修改系统时间需要管理员权限,具体操作:命令行执行sudo gedit /etc/sudoers打开sudoers文件。增加user ALL=(ALL)NOPASSWD:ALL并保存。如上操作为用户赋予sudo且无需密码的权限。2.修改系统时间QString setDateCmd = QString("sudo date -s %1/%2/%3").arg( QString::number(month), QString::number(day), QString::number

2020-11-24 20:30:24 2250

原创 Qt 中文编码注意事项

1.源文件的编码Linux默认编码方式为UTF8,Windows默认编码方式GB2313/GBK。首先确保源文件的编码方式与操作系统保持统一。可以通过文本编辑器——另存为方式修改源文件编码。这样就可以不需要QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));//或者UTF-8,因为Qt会默认使用系统的编码。注意:在Windows中编辑的源代码拷贝到Linux时,首先手动改变源文件编码方式。2.QString的编码QStri

2020-11-13 17:35:45 171

原创 Qt mysql操作及注意事项

1.打开数据库 m_database = QSqlDatabase::addDatabase("QMYSQL"); m_database.setHostName("localhost"); m_database.setPort(3306); m_database.setDatabaseName("myDatabase"); m_database.setUserName("root"); m_database.setPassword("12345678");

2020-11-12 12:23:50 283

原创 Qt QTcpSocket 客户端设计(自动重连、多线程处理、发送大数据包、同步方式)

1.问题说明使用Qt编写TCP客户端时,需要完成自动重连服务器,实际使用中开启了一个线程用于断线重连操作和其他自动发送任务等。初始化:m_tcpClient = new QTcpSocket(this);m_tcpClient->abort();//取消原有连接connect(m_tcpClient,SIGNAL(readyRead()),this,SLOT(ReadMessage()));connect(m_tcpClient,SIGNAL(disconnected()),this,S

2020-11-11 20:02:06 10429 1

原创 系统开发时复杂逻辑的分析与实现方法(个人实践经验)

系统开发时复杂逻辑的分析与实现方法描述需要完成的功能目标(从用户使用角度出发);分析参与功能实现的角色,输入项、输出项、资源(工具项)分别有哪些?什么方式控制逻辑?把输入项、逻辑控制项分离,对于输入项仅暴露信息输入接口,将所有可影响控制逻辑的输入项记录起来。逻辑控制项根据实际需求,对输入项进行响应。如果是复杂的逻辑,尽量避免分离控制,即避免输入时即响应,这样需要控制的状态就比较多,可以考虑使用统一的触发接口,使用分支诺列所有输入所属情况,并对处理内容进行控制,这样会使得系统设计更简介明了,逻辑更清

2020-10-23 10:40:54 1030

原创 Ubuntu内存虚拟硬盘——tmpfs

1.用途举例在程序开发中需要对视频流进行连续不断的循环保存,后续处理对临时视频保存结果进行截取。如果选择保存到固态硬盘,连续擦写会迅速消耗固态硬盘使用寿命;如果选择机械硬盘,读写速度又会受到影响。因此使用内存构造一个虚拟的硬盘,即保护了固态硬盘又提升了读写速度。2.tmpfs简介在Linux系统中,tmpfs是一种虚拟内存文件系统,存储空间位于VM(Virtual Memory)之中。VM由RM(Real Memory)和swap构成。RM是实际的物理内存空间(内存条),swap为虚拟空间(硬盘),

2020-09-18 16:22:59 7500 1

原创 Linux(Ubuntu)配置QtCreator使用cuda-gdb调试Cuda .cu

1.项目设置使用QT在Linux(Ubuntu)下开发C++软件时,使用CUDA进行加速。首先是在ubuntu下配置好cuda的开发环境,可参照其他相关博客。在.pro中进行配置:CUDA_DIR = /usr/local/cuda-11.0CUDA_LIBS = -lcudart -lcudaINCLUDEPATH += $$CUDA_DIR/includeQMAKE_LIBDIR += $$CUDA_DIR/lib64LIBS += $$CUDA_LIBSCUDA_SOURCES

2020-07-30 14:54:36 2482

原创 最小二乘法——拟合平面方程(深度相机外参标定、地面标定)

1.最小二乘法最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘法还可用于曲线拟合。其他一些优化问题也可通过最小化能量或最大化熵用最小二乘法来表达。最小二乘法的矩阵形式为:Ax=bAx=bAx=b其中 AAA 为 n∗kn * kn∗k 的矩阵,xxx 为 k∗1k*1k∗1 的列向量,bbb 为 n∗1n*1n∗1 的列向量。如果 n>k

2020-06-23 16:30:44 16593 9

原创 Qt图片交互——QGraphicsView+鼠标选点+放大缩小+OpenCV

1.功能目标通过 QGraphicsView 实现 OpenCV Mat 的显示,并且可以响应鼠标事件,在 Mat 上绘制选择的点,同时可以进行放大缩小操作。备注:QLabel 也能够完成同样的操作,但是QLabel的放缩是对控件本身缩放,且像素显示会自动插值,图片放大时无法显示单个像素点,且控件放大太大时响应会很慢,如果仅固定大小图片进行展示,可以选择使用QLabel。需要放缩操作时,QGraphicsView 更好用。2.核心代码2.1.初始化在窗体中增加QGraphicsView控件,示例中

2020-06-22 14:47:48 11324 32

原创 Qt界面美化QSS——(二)盒子模型(Box Model)

1.盒模型使用样式表时,每个widget都被视为包含四个同心矩形的框:边距矩形(margin rectangle)、边框矩形(border rectangle)、填充矩形(padding rectangle)和内容矩形(content rectangle)。盒子模型如下图所示:边距(margin)、边框(border)宽度和填充(padding)属性都默认为零。在这种情况下,所有四个矩形(边距、边框、填充和内容)完全重合。可以使用background-image(背景图片)属性指定widget的背景

2020-06-20 19:12:48 2201

原创 Qt界面美化QSS——(一)使用方式、语法(选择器、伪状态)

QSS——Qt Style Sheet,Qt通过样式表设置控件样式进行个性化定制、界面美化。1.使用方式1.1.Qt Designer在Qt Designer中,每个控件都有styleSheet属性,通过键入样式表,即可设置该控件的样式。如下图:使用该方式的好处在于,可以直观看到设计效果,通过Ctrl+R就可以预览窗体设计。并且在编辑样式表窗口中添加资源、添加渐变、添加颜色、添加字体,方便直接编辑特定样式的颜色。此类方式编辑的样式表会作用于当前控件及其所有子控件。1.2.QSS文件使用QFil

2020-06-20 17:54:44 33671 3

原创 VTK——模拟深度相机拍摄深度图(RGB-D)

1.设置vtkCamera内参已知相机内参为:fx、fy、cx、cy,图像尺寸为:width、height。相机相对于世界坐标系的外参矩阵为extrinsicMatrix4x4,即相对于世界坐标系的旋转平移。如果不存在外参,则该矩阵为单位矩阵。首先保证renderWindow的尺寸也设置为width、height。 // 将相机相对世界坐标系的外参赋值给相机 camera->SetModelTransformMatrix(extrinsicMatrix4x4); // 由于SetM

2020-06-14 15:05:47 3537 2

原创 三维数据分析、线激光切片数据分析——VTK显示

1.项目介绍利用三维点云对线激光采集的数据进行分析,并对其中凹陷部分进行测量。如下为单线分析。主要目标是测量凹槽到下端平面的距离。2.运用到的知识点2.1.最小二乘三维平面拟合数据点云是通过双目相机对打在目标上的线激光匹配得到的结果,也就是说激光的切面不在XOZ或XOY平面内,为了方便数据分析,将三维点云投影到线激光平面。通过最小二乘拟合,可以通过采样数据点得到平面方程:z=Ax+By+C z = Ax + By + C z=Ax+By+C公式推导参考:最小二乘解//m为采样数据数,大于等于

2020-06-02 22:18:50 888

原创 VTK——保存图片及坐标系变换(World->View)

1.保存图片在工程应用中,需要对三维场景进行抓拍,形成图片,采用vtkWindowToImageFilter和vtkJPEGWriter即可完成该功能。核心代码如下:_renderWindow->Render();//对当前场景进行渲染vtkSmartPointer<vtkWindowToImageFilter> wti = vtkSmartPointer<vtkWindowToImageFilter>::New();wti->SetInput(_renderW

2020-05-09 15:54:13 2055

原创 三维显示及处理工具VTK——开发环境搭建(VS2017+Qt5.9.2+VTK8.2)

1.VTK简介Vtk,(visualization toolkit)是一个开源的免费软件系统,主要用于三维计算机图形学、图像处理和可视化。Vtk是在面向对象原理的基础上设计和实现的,它的内核是用C++构建的,包含有大约250,000行代码,2000多个类,还包含有几个转换界面,因此也可以自由的通过Java,Tcl/Tk和Python各种语言使用vtk。——来源百度词条The Visua...

2020-04-28 18:59:13 4002

原创 视觉SLAM(一)——视觉SLAM框架

1.简介及说明SLAM(Simultaneous Localization And Mapping)——同时定位与地图构建。因此SLAM是研究“定位”和“地图构建”问题的。目前多用于机器人导航、无人车驾驶、跟踪建模。对于不同应用场景,精度要求、鲁棒性等有所差异,此时选择传感器、运算侧重环节也往往不同。但是基本框架几乎一致。本系列主要研究以视觉为主的SLAM系统,主要是系统的学习基础的SLAM...

2020-04-26 12:57:01 4915

原创 1.Linux环境下的Nuttx开发环境搭建

下边开始记录在Linux环境下的Nuttx开发环境的搭建,使用的Linux操作系统为Ubuntu 14.04 LTS。在Linux下的命令行下进行(Ctrl + Alt + T)1.安装ubuntu,然后将系统所有packages更新。 sudo apt-get update2.安装ARM Toolchain。(也可以选择使用buildroot自己搭建开

2015-08-22 11:01:52 4781 1

Qt 图片交互-鼠标滚轮放缩、拖拽、选点

Qt 图片交互——鼠标滚轮放缩、拖拽、选点(工程源代码,编写的库方便使用,包含demo)演示视频:https://www.bilibili.com/video/BV1yv411P7hJ/

2021-08-16

空空如也

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

TA关注的人

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