自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 Qt 菜单栏上手教程:QMenuBar QMenu QToolbar

在Qt框架中,QMenuBar、QMenu、QToolbar和QAction都是用于构建应用程序界面中的用户交互元素。总结,QMenuBar、QMenu、QToolbar和QAction是协同工作的类,用于创建和管理一个应用程序的用户界面命令和控制。它们使得界面元素之间的动作同步变得容易,提高了代码的重用性和界面的一致性。

2024-04-23 14:20:55 566

原创 Qt 翻译工具:使用 tr() 函数实现多语言支持

Qt 的国际化工具使得实现多语言支持变得简单高效。通过正确使用 `tr()` 函数和相关工具,开发者可以为应用程序添加本地化功能,满足不同地区用户的需求。遇到问题时,检查类的继承关系、翻译文件的加载方式和路径设置,通常可以解决大多数翻译问题。

2024-04-08 13:42:56 875

原创 在C++项目中使用python脚本(四种)常见报错解决

上一期我们讲了如何在C++中使用python脚本,这期讲讲过程中常会遇到的一些错误。

2024-03-14 17:38:09 222

原创 在C++项目中使用python脚本(详细篇)

首先找到我们的python安装路径,如果你是anaconda管理的,先找到anaconda安装路径,然后点进envs就可以找到你配置的所有python环境了。这句语句是在添加python.exe所在路径,不添加可能会报错,因为你电脑中可能存在多个python环境,当你的库和python版本不匹配时就会报错。打开我们的visual studio,新建一个空项目,右键项目然后选择属性(由于这一步不好截屏便用手机拍摄)然后点击链接器->常规->附加库目录,方法和上面一样,这里是将库文件目录包含进去。

2024-03-14 17:19:56 446

原创 PyTorch安装教程【小白入门】

无论你是刚入门的AI爱好者还是有经验的机器学习工程师,这篇文章都将为你提供所需的一切信息,让你的开发环境配置变得轻松而无忧。输入conda activate your_env_name或者activate your_env_name【有时第一个会报错,使用第二个即可】,进入环境。有可能会出现下载错误和异常中断的问题,只要重复运行这个下载命令,然后等完成安装完成即可。CUDA安装完后,打开以下网址,找到对应cuda版本的PyTorch下载命令。重复安装会读取之前的下载好的缓存,只会下载未完成的部分。

2024-03-05 16:13:01 810

原创 CUDA安装教程【小白入门】(包含版本选择,安装失败,环境变量配置)

本文提供了一个详细的指南,帮助深度学习开发者在Windows系统上快速安装PyTorch和CUDA。我们将逐步介绍如何设置Anaconda虚拟环境、安装指定版本的PyTorch以及配置CUDA,以确保你的深度学习项目可以充分利用GPU加速。无论你是刚入门的AI爱好者还是有经验的机器学习工程师,这篇文章都将为你提供所需的一切信息,让你的开发环境配置变得轻松而无忧。

2024-03-05 11:45:17 1217

原创 常用的数据结构(优缺点分析与应用场景)

无需特殊处理链表尾部:在非循环链表中,需要特别处理链表的尾部(例如,在尾部添加或删除节点)。而在循环链表中,由于尾部自然地连接到头部,这样的特殊处理就不再需要。遍历效率:在循环链表中,可以从任一节点开始遍历整个链表,而不需要首先定位到链表的头部。这在某些情况下可以提高遍历的效率。实现循环队列:循环链表可以更自然地实现循环队列这种数据结构,其中元素可以不断地入队和出队。循环队列:循环链表是实现循环队列的一种有效方式,特别是在需要固定大小的队列时。

2024-02-21 14:21:11 702

原创 STM32与Android蓝牙通信:理解二进制和十六进制数据转换

在嵌入式系统和移动应用开发领域,理解蓝牙通信中的数据传输和格式转换是至关重要的。本文深入探讨STM32(一种广泛使用的微控制器)与Android手机通过蓝牙进行通信时,数据的格式和转换过程。特别是,我们将聚焦于二进制与十六进制数据的转换以及其在实际应用中的重要性。

2024-01-04 11:34:28 1106

原创 QT实现XML文件的写入和读取

引言: 在本文中,我们将探讨如何使用Qt框架中的QXmlStreamReader和QXmlStreamWriter来读写XML文件。这些类提供了一个高效的方式来处理XML数据,非常适合于需要读取或生成复杂XML结构的应用程序。

2023-12-19 19:46:43 1341

原创 QThread的两种使用方式:深入理解 Qt 的多线程编程

在 Qt 的世界里,多线程编程是一个常见的需求。`QThread` 是 Qt 提供的一个线程类,它可以通过两种不同的方式使用:继承 `QThread` 和使用 `QThread` 运行 `QObject` 派生类的实例。本文将详细介绍这两种方法,并通过示例代码帮助你理解它们的应用场景和优缺点。---

2023-11-30 17:02:11 469

原创 继承 QThread 和 QRunnable 有什么区别:理解 Qt 多线程编程

QThread 适用于长期运行的任务或需要线程自己的事件循环的场景。- QRunnable 更适合短期、独立的任务,尤其是当任务数量众多且可以并行处理时。在选择使用 `QThread` 还是 `QRunnable` 时,需要考虑任务的性质和需求。对于复杂、长期运行的线程任务,`QThread` 是更合适的选择;而对于短期、可并行的任务,`QRunnable` 与线程池结合使用则更加高效。

2023-11-30 16:31:03 538

原创 如何用VTK、ITK对DCIOM模型进行分割

这个过程涵盖了从读取 DICOM 图像、图像处理(阈值分割和连通性分析)、用户交互(选定区域处理)到最终的3D可视化。此代码对于理解如何在医学图像处理中结合使用 ITK 和 VTK 是非常有用的。

2023-11-29 11:45:03 442

原创 在QStackedWidget中用代码添加一个widget

我们需要在QStackedWidget中的page中添加一个布局,然后再吧widget添加到布局中

2023-11-15 10:44:29 147 1

原创 在QT中添加QVTKOpenGLNativeWidget

将QOpenGLWidget提升为QVTKOpenGLNativeWidget

2023-11-15 10:37:06 222 1

原创 QT高级设计学习

对于layout属性的解析:当你想要调整一个widget中各个组件与上下左右边框的距离,和组件之间的距离时,就调以下参数组件的属性解析:对组件spacer的用法:如果你不想让你的弹簧那么长,那么你可以修改sizeType来限制最大长度

2023-11-15 10:33:48 20 1

原创 如何对vtkDICOMImageReader读取的数据进行变换

2023-11-15 10:24:13 38 1

原创 VTK渲染NIFTI和NRRD格式的数据

2023-11-15 10:17:25 109 1

原创 vtkNew和vtkSmartPointer

2023-11-15 10:15:38 93 1

原创 用vtkGenericOpenGLRenderWindow实现与模型的旋转、平移

这个窗口有默认的交互方式,具体流程是鼠标调整视角,按一次a,进入模型旋转模式,再同时按住SHift便为模型移动模式,按下c表示确认,将退出与模型的交互。具体应用:在进行假体和模型位置匹配的时候可以用。

2023-11-15 10:09:05 242 1

原创 vtkRender和vtkResliceImageViewer(vtkGenericOpenGLRenderWindow)和VTKRenderWidget在使用时的关系

vtkRenderer是用来渲染3D模型的,vtkResliceImageViewer是用来渲染二维切面视图的,而VTKRenderWidget是用来承载这两个渲染器,来显示画面的。

2023-11-15 09:57:58 215 1

原创 VTK常用交互类的解析

与 vtkInteractorStyleTrackballActor 不同,vtkInteractorStyleTrackballCamera 的操作是针对相机的,因此会影响观察场景的方式,而不是单独的对象。: vtkInteractorStyleTrackballActor 是一个交互风格类,它允许用户通过使用鼠标来旋转、移动和缩放场景中的演员(actor),这些演员是渲染管线中的实体,代表了可视化的数据。用户可以通过鼠标直接与场景中的对象交互,而不是与整个场景或相机交互。

2023-11-15 09:46:20 122 1

原创 对于VTK三维针尖位置实时更新二维图像中针尖所在位置:

我们可以发现第一和第三它最上面的图层是图层的最大深度,但是第二个的是0(这个暂时不知道为什么),如果我们想要在vtkimageviwer2中显示的图形不被图层遮挡的话,我们就要把图像显示到最上层,而且vtkimageviwer2中似乎也是一个立体的空间,也是有深度的,而且深度的方向对于每一个视图都不一样,所以在设置图形深度时要将对应的轴设为最大或0,然后除了深度以外的所有参数居然可以直接用针尖坐标,而不用映射。

2023-11-15 09:43:11 52 1

原创 关于VTK中三维图像针尖位置实时更新二维切片深度:

二维切面实时显示三维坐标点的灵感,一个切面的x,y的值,等于其他两个切面的深度。如果是要把中心点也加进去也就是显示一个直线,那么就要对中心点也做映射运算,我们会发现对图层深度而言并不是简单的xyz坐标,而是要把xyz坐标映射到这个区间上,才是正确的图层深度。

2023-11-15 09:34:09 55 1

原创 VS2022切换到VS2019后项目报错

选中报错的项目,然后点击菜单栏的项目中的属性,然后按图片上修改即可。

2023-11-15 09:24:07 467 1

原创 vtk:icp配准算法及踩坑(vtkIterativeClosestPointTransform)

在点云配准中,初始对齐通常是一个关键的步骤。如果点云之间存在较大的旋转或平移,ICP 算法可能会陷入局部最小值,导致配准失败。通过将点云的质心对齐,可以大大提高找到良好初始对齐的机会,这有助于 ICP 算法更快地收敛到全局最佳解。请注意,启用此选项可能会降低算法的收敛速度,因为在开始时需要额外的计算来匹配质心。:ICP 算法会通过将源点云平移到目标点云的质心来对齐它们。:在启用这个选项后,ICP 算法会首先计算源点云和目标点云的质心(中心点)。,你实际上提高了初始对齐的质量,从而可能使点云配准更准确。

2023-10-16 17:09:00 140 1

原创 行列式和逆的变换解释

我们可以发现,先看第一列,为3 0,那么说明基向量i还在x轴上,只是扩大了三倍,但是第二列为2 2,说明基向量j已经偏离了y轴,那么我们就会发现这个坐标系已经发生了改变,不再是直角坐标系。所以说变换矩阵前3*3的部分,我们称之为旋转矩阵的部分,其实就是我们所说的变换坐标系,变换到这个变换的坐标系下,再平移。这里说的平移不是说向量整个平移,因为原点是不会动的,一直在(0,0),那么就移动的终点坐标,是终点坐标平移的意思,所以向量的平移看起来并不是平移。

2023-10-13 18:53:38 117

原创 矩阵乘法与线性变换复合

需要注意的是这是一个一直左乘的过程,我们阅读这个矩阵变换运算的过程的时候应该从右往左看。这个复合运算就好像,你将第一个矩阵看成变换之后的两个基向量,然后这两个基向量又再第二个变换下形成两个新的基向量,然后这两个新的基向量就是复合矩阵。前期回顾:意味着我们只需要记住变换之后的基向量,然后输入向量进行变换就行,也就是变换矩阵对向量进行应用。那么问题来了,我们矩阵相乘的先后(变换顺序的先后)有影响吗?通过计算或者变换结果可知顺序是会影响的。但是矩阵运算是有结合律的,这一点不能和上面弄混。

2023-10-13 14:26:04 61

原创 矩阵与线性变换

这种方法帮助我们更直观地理解线性变换,以及如何在向量空间中通过改变基向量来实现不同的效果。线性变换的理解对于计算机图形学、工程和物理建模等领域都非常重要,因为它们描述了物体和数据之间的关系,并允许我们以一种直观的方式来处理它们。想象一下,如果你想对一个向量进行旋转操作,可以将其视为将基向量旋转,然后再将新的基向量组合以形成新的向量。线性变换为我们提供了一种特殊的方式来理解输入和输出之间的关系,通过它,我们可以将这种关系可视化为一种运动。如果你向空间中添加一个向量,它的最终位置将取决于基向量的变化。

2023-10-13 10:43:43 100

原创 线性组合、张成的空间与基

例如,如果我们有三个基向量,那么通过改变常数 a、b 和 c,我们可以得到三维空间中的任何向量。总之,线性组合、张成的空间和基向量是线性代数中的核心概念,它们帮助我们理解向量之间的关系,构建多维空间,并在计算机图形学等领域中应用。基向量是构建向量空间的基础。在二维空间中,只需两个线性无关的基向量,就能够组合出该平面的任何向量。在这篇总结中,我们将讨论线性组合、张成的空间和基向量,这些概念对于理解线性代数非常关键。对坐标进行变换时,实际上是在进行基向量的线性组合,同时使用 x、y 和 z 来缩放这些基向量。

2023-10-13 10:08:48 55

原创 如何检测vtk中icp点云配准的质量

均方根误差(RMSE)是一种广泛使用的误差度量,用于评估点云配准的质量。它计算了配准后每个点的误差,然后求这些误差的平方的均值的平方根。n是点的总数。distance是每个点的配准误差。

2023-10-12 18:05:26 300

原创 乘法和逆矩阵:理解矩阵相乘和逆矩阵

逆矩阵不存在情况:如果一个矩阵 A 存在一个非零向量 X,使得 AX = 0,那么说明矩阵 A 的列向量都在同一方向上,因此逆矩阵不存在。结果矩阵的尺寸:如果矩阵 A 是一个 mxn 的矩阵,而矩阵 B 是一个 nxp 的矩阵,那么结果矩阵 C 将是一个 mxp 的矩阵。对应行乘于对应列:在矩阵 A 与矩阵 B 相乘时,结果矩阵 C 的每个元素都是 A 中的一行与 B 中的一列对应元素的乘积之和。矩阵相乘是一种重要的线性代数操作,它允许我们将一个矩阵与另一个矩阵相结合,从而创建新的矩阵。

2023-10-12 16:30:18 530

原创 线性代数的直观理解:方程组与矩阵乘法

线性代数为我们提供了强大的工具,以便更好地理解和解决方程组的问题,并将线性关系用矩阵和向量相乘的方式简化。:我们可以将矩阵的每一列看作一个向量,然后将每个向量与向量 x 的对应分量相乘,并将结果相加以获得最终的输出向量。:我们也可以从矩阵的每一行出发,将矩阵的每一行与向量 x 的对应分量相乘,并将结果相加以获得输出向量。无论使用哪种视角,重要的是确保矩阵的列数等于向量的行数,否则无法进行矩阵与向量的乘法运算。矩阵与向量相乘是线性代数中的一项重要操作,它允许我们将复杂的线性关系简化为紧凑的数学形式。

2023-10-12 15:15:33 86

空空如也

空空如也

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

TA关注的人

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