- 博客(61)
- 资源 (4)
- 收藏
- 关注
原创 QGraphicsView、QGraphicsScene和QGraphicsItem图形视图框架(四)自定义QGraphicsItem
qt提供了一些自带的基础图形项,当这些基本的图形项不能满足我们的需求时,此时就需要重写QGraphicsItem自定义实现自己的需求。实现自定义QGraphicsItem,需要重写两个纯虚函数1.返回的矩形框2.绘制。
2024-09-24 11:00:14
477
原创 QGraphicsView、QGraphicsScene和QGraphicsItem图形视图框架(三)添加图形项的简单案例
qt自带的图形项:QGraphicsRectItem 矩形,QGraphicsEllipseItem 椭圆,QGraphicsLineItem 线,QGraphicsPixmapItem 图片,QGraphicsPolygonItem 多边形,QGraphicsSimpleTextItem 文本,QGraphicsPathItem 路径需要注意:设置图形项在场景中的位置时,设置的是图形项中的原点位置位于场景中的位置。
2024-09-11 11:30:27
1068
原创 QGraphicsView、QGraphicsScene和QGraphicsItem图形视图框架(二)疑难杂症
设置场景的背景图片时,采用setBackgroundBrush()方法和重写drawBackground()函数得到的结果很不一样,而且通过setSceneRect设置场景原点位置之后得到的结果也有很大区别,查了很多资料也没有查到。如下图第一个和第三个中重写了QGraphicsScene的drawBackground()函数,区别在于第一个的场景原点在左上角,第三个的原点在中心。
2024-09-06 17:20:18
1312
原创 QGraphicsView、QGraphicsScene和QGraphicsItem图形视图框架(一)简单介绍
QGraphicsScene是一个用于管理大量图形项目的容器。场景中的每个项目都是QGraphicsItem的子类。场景负责处理项目的交互和碰撞检测。QGraphicsScene类似于一个舞台,上面放置了各种角色(即图形项目)。QGraphicsItem是一个抽象基类,用于表示场景中的图形项目。有许多预定义的子类,如QGraphicsPixmapItem、QGraphicsTextItem、QGraphicsPolygonItem等,用于创建不同类型的图形对象。
2024-09-04 18:49:08
2123
原创 linux下利用linuxdeployqt工具进行打包
在用这个工具之前,都是直接使用脚本进行的打包,但是打出来的包在更高的linux系统中运行不起来,所以了解了linuxdeployqt工具。脚本打包详细看。
2024-08-12 12:09:35
1238
原创 (三)ffmpeg 解码流程以及函数介绍
在调用该函数时,需要先确定源图像和目标图像的尺寸、像素格式以及是否需要进行某些特定的处理(例如缩放、裁剪、旋转等),然后根据这些信息来设置相应的参数。这个函数是FFmpeg多媒体处理流程的起点,通常用于设置后续的解码、编码或其他处理步骤。:可选参数,指定与要查找的流相关的流的索引号。例如,如果要查找的视频流与音频流相关联,可以设置此参数为音频流的索引号。这些选项可以影响编解码器的打开过程或被用来设置特定格式的私有选项。:如果多个资源之间存在依赖关系,应按照正确的顺序释放资源,以避免未定义的行为。
2024-04-10 15:22:13
2368
1
原创 (二)ffmpeg 下载安装以及拉流推流示例
在这里,选用的流媒体服务器是mediamtx。系统不同选择的压缩包不同,我用的是ubuntu系统。下载下来之后进行解压,可以看到里面有三个文件打开命令窗口,执行命令启动服务器。./mediamtx。
2024-04-09 18:26:47
1259
原创 (一)ffmpeg 入门基础知识
FFmpeg是一套强大的开源音视频处理工具,能够录制、转换以及流化音视频内容。FFmpeg是开源的,这意味着它的源代码是公开的,允许任何人使用、修改和分发。它提供了录制、转换以及流化音视频的完整解决方案,支持多种格式。具体来说:录制:FFmpeg可以用于录制音频和视频。例如,它可以从各种设备(如摄像头或麦克风)捕获音频和视频,并将其保存到文件中。转换:FFmpeg可以转换音频和视频文件的格式。这包括改变编码、分辨率、比特率等。这使得它非常有用于处理不同设备和平台之间的兼容性问题。
2024-04-09 16:21:34
1462
原创 pcl+vtk(十六)vtkInteractorStyleTrackballCamera选中渲染器中的演员actor
上一篇文章介绍过vtkInteractorStyleTrackballCamera的使用,可以通过重写vtkInteractorStyleTrackballCamera类,重写鼠标坐及左键按下事件void OnLeftButtonDown() override来获取选中的演员actor。如果想在渲染器中选中一个演员actor,该怎么拿到选中的演员actor呢?widget.cpp中主要代码。
2024-03-12 18:21:07
651
原创 解决ssh: connect to host 192.168.x.x port 22: Connection refused
我在使用scp命令向另一目标主机传输文件时提示ssh: connect to host 192.168.x.x port 22: Connection refused错误,总结出现的原因,及解决办法。如果提示Unit ssh.service could not be found则说明未安装ssh。systemctl start ssh 或 service ssh start。如果未解决可以在查看目标主机的22断口是否在监听。查看目标主机的ssh服务是否启动。如下图显示则启动状态。
2024-02-05 16:48:02
6833
原创 pcl+vtk(十五)vtkInteractorStyleTrackballCamera用户交互
vtkInteractorStyleTrackballCamera控制用户交互操作相机,场景的视点。在该类及其子类中,移动的是Camera,Actor并没有发生移动。主要鼠标键盘操作控制:左键按住移动:旋转右键按住移动:缩放滚轮按住移动:移动ctrl +左键按住移动:快速旋转(同旋转不同)shift +左键按住移动:移动ctrl + shift +左键按住移动:缩放。
2024-02-05 15:23:42
1420
原创 pcl+vtk(十四)vtkCamera相机简单介绍
人眼相当于三维场景下的相机, VTK是用vtkCamera类来表示三维渲染场景中的相机。vtkCamera负责把三维场景投影到二维平面,如屏幕、图像等。:即相机所在的位置,用方法vtkCamera::SetPosition()设置。:用方法vtkCamera::SetFocusPoint()设置,默认的焦点位置在世界坐标系的原点。:即哪个方向为相机朝上的方向。就好比我们直立看东西,方向为头朝上,看到的东西也是直立的,如果我们倒立看某个东西,这时方向为头朝下,看到的东西当然就是倒立的。
2024-01-25 12:18:53
1918
原创 pcl+vtk(十三)mesh模型的加载显示
Mesh模型是一种用于描述三维物体表面的数学表示方法。它由一系列顶点(vertices)和连接这些顶点的线段或面片(faces)组成。每个顶点具有其在三维空间中的坐标位置,而每个面片则由一组顶点索引构成,定义了一个平面。在Mesh模型中,可以使用不同的数据结构来表示顶点和面片之间的关系,常见的包括三角形网格(triangle mesh)和四边形网格(quadrilateral mesh)三角形网格是最常用的一种,它由三个顶点和一个法线向量(用于确定面片的朝向)组成。四边形网格则由四个顶点和一个法线向量构成。
2024-01-24 15:40:28
1802
原创 pcl+vtk(十二)使用vtkPolyData创建点、线、面(不规则面)、三角带
vtkPlaneSource创建平面,只可以创建平行四边形的平面,根据一个起点和两个终点创建法向量创建平面。但是当有创建多个点围成不规则平面的需求时,该怎么创建显示呢?在网上查了资料,可以使用vtkPolyData拓扑结构。
2023-11-25 15:11:45
1812
1
原创 pcl+vtk(十一)智能指针 vtkSmartPointer
每个对象中都会维护一个引用计数的变量,用来表示当前对象被多少对象引用。当对象被另一个对象引用时,引用计数加1;当另一个对象取消对该对象的引用或者另一个对象被移除时,引用计数减1。如果对象的引用计数减为0时,程序会自动析构这个对象。在VTK中使用智能指针用类vtkSmartPointer来定义对象。
2023-11-17 10:53:52
838
原创 pcl+vtk(十)八叉树可视化显示
八叉树(Octree)是一种空间划分结构,是一种二叉树的扩展,每个节点可以最多有8个子节点。二、八叉树在VTK中的使用1.直接加载ply文件显示八叉树2.根据点云数据显示八叉树
2023-11-14 12:16:26
587
原创 QT通过url下载http地址下的文件(文件夹)
之前只写过通过http协议通信,没有写过下载http地址中的文件以及文件夹,了解一下在QT下如何下载。其实很简单,同使用协议通信相同的是,创建QNetworkAccessManager和QNetworkRequest,设置QNetworkRequest的url,通过get请求接收QNetworkReply中数据,利用downloadProgress信号接收每次下载下来的内容,知道下载完成。
2023-10-31 17:55:28
2449
原创 pcl+vtk(九)QVTKOpenGLNativeWidget同时显示点云和模型
【代码】(九)QVTKOpenGLNativeWidget同时显示点云和模型。vtkUnsignedCharArray显示pcd文件中rgb颜色信息。加载obj和stl文件形式模型。
2023-10-24 11:52:29
2612
2
原创 pcl+vtk(八)vtk常用类的常用函数介绍(附带代码示例)
vtk中类的说明以及函数使用。vtkPoints、vtkCellArray、vtkSphereSource、vtkConeSource、vtkCylinderSourcev、tkCubeSource、vtkPlaneSource、vtkLineSource、vtkDiskSource、vtkPointSource、vtkTextSource、vtkArrowSource、vtkPolyData
2023-10-20 18:26:18
1604
原创 pcl+vtk(七)QVTKOpenGLNativeWidget中显示坐标轴
设置坐标系的原点位置设置坐标轴的总长度设置坐标轴的轴身类型(int type)0:柱状轴身1:线性轴身如果类型为0:SetCylinderRadius(double):设置柱状轴半径设置坐标轴的轴顶部类型0:圆锥体1:球体如果类型为0:SetConeResolution(double);设置锥面数设置锥半径如果类型为1:SetSphereResolution(double);设置球面数设置球半径是否显示标签设置轴标签。
2023-10-20 15:34:46
2485
7
原创 pcl+vtk(六)vtk简单介绍、渲染流程、简单示例
Vtk(visualization toolkit)是一个开源的免费软件系统,主要用于三维计算机图形学、图像处理和可视化。
2023-10-19 16:04:28
1370
原创 pcl+vtk(五)PCLVisualizer显示点云的深层用法
PointCloudColorHandlerGenericField将不同的深度值显示为不同的颜色,实现以颜色区分深度的目的;PointCloudColorHandlerCustom将点云作为整体并统一着色,PointCloudColorHandlerGenericField将点云按深度值(“x”、“y”、"z"均可)的差异着以不同的颜色。PointCloudColorHandlerRGBField得到每个点云对应的颜色。文章的基础上,修改按钮对应的槽函数中的程序。自定义点云颜色,利用。
2023-10-17 18:30:25
704
原创 pcl+vtk(四)pcd和ply方式存储点云简单介绍,以及ply格式转换为pcd格式点云方法
一个pcd文件中通常由两部分组成:文件说明和点云数据。读取pcd文件中的rgb信息时,报错Failed to find match for field 'rgb' 原因有两个:一是读取的pcd文件中没有rgb数据。二是pcl的版本与文件中存储的rgb数据格式不一致。
2023-10-17 15:26:18
1136
原创 pcl+vtk(三)QT中使用QVTKOpenGLNativeWidget的简单教程以及案例,利用PCLVisualizer显示点云
先添加一个带有ui的QT应用程序。然后将QOpenGLWidget控件提升为QVTKOpenGLNativeWidget控件,步骤如下:
2023-10-17 14:22:18
10508
10
原创 pcl+vtk(二)Ubuntu18.04下载安装基于使用QT的pcl1.13+vtk8.2,以及卸载
Ubuntu18.04下载安装基于使用QT的pcl1.13+vtk8.2,以及卸载QVTKWidget:目前了解到的只可显示点云,没有在网上找到显示模型的例子。QVTKOpenGLNativeWidget:既可显示点云又可显示模型。
2023-10-11 18:06:46
2885
13
原创 pcl+vtk(一)Ubuntu18.04中QT安装下载安装pcl和vtk以及使用过程中踩过的坑
之前从来没有接触过QT中显示3D点云方面的知识,了解到可以用pcl,然后在网上各种找pcl下载的相关内容,想要在QT中显示出来,需要用到VTK,又开始找VTK的下载的相关内容。网上大多数推荐的pcl1.9+vtk7.1,用QVTKWidget这个控件来显示,然后找了篇文章跟着流程进行下载。但是!!!后来知道,不只要显示点云,还要显示模型。查找资料之后发现QVTKWidget这个控件不能显示模型,需要用QVTKOpenGLNativeWidget,刺激的来了,vtk8.2版本之后才有这个控件。
2023-10-11 14:15:40
1234
原创 QT中报:-1: error: Unknown module(s) in QT缺少模块错误——解决办法
QT中报:-1: error: Unknown module(s) in QT缺少模块错误——解决办法。:-1: error: Unknown module(s) in QT: 3dcore 3drender 3dinput 3dlogic 3dextra;private/qzipwriter_p.h: No such file or directory;:-1: error: Unknown module(s) in QT: websockets
2023-09-18 16:03:53
7291
原创 (四)添加rviz自定义插件
在工作空间src下创建存放消息的包,右击【src】,选择【添加新文件...】。选择【ROS】,选择【Package】,点击【Choose...】按钮。写入【Name:】名称,写入【Catkin:】依赖,消息依赖于 std_msgs和message_generation。点击【完成】按钮。找到创建的消息包【plugin_msg】文件夹,在此新建文件夹,名称为【msg】,目录结构如下:右击【msg】,选择【添加新文件...】。
2023-08-17 10:52:20
1811
1
原创 (三)在ros环境和qt环境下进行cmake编译,编写CMakeLists.txt文件
CMakeLists.txt 文件是在 CMake 中定义项目的基本配置和构建规则的文本文件。8.在定义消息类型时,编译的可执行文件依赖这些动态生成的代码,需要使用${PROJECT_NAME}_generate_messages_cpp进行配置。添加头文件搜索路径,编译器使用这些目录来查找头文件,第一个参数“include”表示包中的include/目录也是路径的一部分。指定将要构建的可执行文件的名称,以及它所依赖的源文件。用于指定包的依赖关系,由依赖于这个包的其他软件包使用。7.定义库文件的构建规则。
2023-08-08 15:50:18
759
原创 (一)对ROS中的RVIZ的简单理解
rviz作为一种可扩展化的视图工具,可以使用插件机制来扩展丰富的功能,进行二次开发,我们在rviz中常常使用的激光数据可视化显示、图像数据可视化显示,其实都是官方提供的插件。但是很多时候,这些基础的插件无法满足我们的需求,这个时候rviz的plugin机制就派上用场了。rviz是基于OGRE图形渲染库和QT库实现的,QT库的信号和槽函数的机制提供了动作效果的实现,OGRE库负责了设计效果和渲染的实现。rviz是ROS官方提供的一款3D可视化工具,可以将机器人的相关数据进行图形化显示。四 、RVIZ的实现。
2023-07-19 17:29:07
2994
原创 ubuntu下QT 通过快捷方式.desktop实现开机自启动程序
必填,表明该文件是一个Desktop Entry文件,节点意思十分明显,桌面入口。Desktop Entry实际上是一个文件标准,该标准由FreeDesktop.org制定。可选,指定了当前文件所遵循的 Desktop Entry 文件标准版本。这是应用程序的描述,通常会在搜索应用程序的界面看到这个描述(鼠标放到应用程序图标上时)。同样的作用,表明使用中文。[]里面可以书写多国语言。必填,启动路径,必须为绝对路径。可选,应用程序通用名称。可选,熟悉web开发的人员应当十分熟悉,这是表明映射。
2023-04-24 15:10:02
924
1
原创 QNetworkAccessManager、QNetworkRequest、QNetworkReply类使用http协议详情及案例
QNetworkAccessManager:是Qt网络模块中的一个类,它用于管理网络请求和响应。可以发送HTTP请求,处理HTTP响应。可以使用不同类型的请求:get,post,put等。QNetworkRequest:用于设置url,发送请求。QNetworkReply:用于接受响应。每当挂起的网络应答完成时,就会发出QNetworkAccessManager::finished()信号。可在此信号对应的槽函数中处理接收到的响应数据,参数将包含一个指向刚刚完成的回复的reply指针。
2023-04-21 16:49:49
2005
原创 C++ 结构体数据读写文件 fopen fclose fwrite wread fseek函数详情
fopen fclose fwrite wread fseek 函数详情,使用案例
2023-03-27 17:14:08
3992
原创 QMetaEnum和Q_ENUM以及遇到的问题
1.error: static assertion failed: QMetaEnum::fromType only works with enums declared as Q_ENUM or Q_FLAG Q_STATIC_ASSERT_X(QtPrivate::IsQEnumHelper::Value, 2.error: ‘qt_getEnumMetaObject’ was not declared in this scope const QMetaObject *metaObject =
2023-03-16 17:30:25
1456
1
原创 C++入门学习:std::function,std::bind,std::placeholders
std::function 是一个模板类。作用是对C++中的可调用对象进行包装,包括普通函数、成员函数、模板函数、静态函数、lambda表达式等。它的最基本的作用是,简化调用的复杂程度,统一调用的方式。声明方式:std::function< 返回值类型 ( 参数类型1, 参数类型2, ...) >
2023-02-28 14:50:08
1922
1
原创 git常用命令
git reset --hard HEAD^ //执行commit后,还没执行push时,删除工作空间的改动代码,撤销commit且撤销add。git reset --soft HEAD^ //执行commit后,还没执行push时,撤销commit,不撤销git add file。git reset --hard 提交的版本id(可根据git log查看) //会退到某个版本。git rm -r --cached 文件夹名词 //删除git控制下的文件夹,保留本地文件。
2023-02-20 14:23:19
133
pcl+vtk在qt中的使用合集
2024-03-13
QT使用QNetworkAccessManager等类发送http请求详细使用案例
2023-04-21
选择时间自定义控件(滚动选择时间)
2022-10-10
flatbuffers在QWebSocket通信中序列化和反序列化的使用案例(c++)
2022-08-29
QtHttpServer相关库的编译+使用案例,支持Linux和Windows系统
2022-07-05
QT+moveToThread线程+connect信号槽+信号返回值
2022-04-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人