自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++:元组的相关操作

从C++11标准开始引入,元组是一个固定大小的集合,可以包含不同类型的元素。这使得元组成为了一种非常灵活的工具,特别是在需要同时处理多个不同类型的数据时。元组是C++中非常有用的一个特性,特别是在需要从一个函数返回多个不同类型值的时候,或者是在处理来自外部源(如数据库或网络)的复杂数据结构时。来创建一个元组的实例。元组中的元素可以通过。然后,我们演示了如何使用。来将元组中的元素解包到单独的变量中。在上面的例子中,我们创建了一个包含。是元素的索引(从0开始)。在C++中,元组是通过。来定义一个元组,并使用。

2024-07-16 10:21:45 325

原创 C++:opencv将彩色图转换为灰度图

但是,对于大多数来自相机或文件系统的图像,你可以安全地假设它们是BGR格式的(在OpenCV中)。:这种方法给了你更多的灵活性,因为你可以先对彩色图像进行一些处理(如裁剪、旋转等),然后再转换为灰度图。但是,它使用了更多的内存,因为你需要同时存储彩色和灰度图像(至少在转换过程中是这样)。对于将彩色图转换为灰度图,你通常会从BGR颜色空间(OpenCV中默认的彩色图像格式)转换到灰度颜色空间。请注意,如果原始图像不是彩色的(即,它是一个灰度图像或具有其他非BGR颜色空间的图像),但你仍然使用。

2024-07-15 11:29:07 501

原创 C++:创建线程

在C++中创建线程,最直接的方式是使用C++11标准引入的<thread>库。这个库提供了类,使得线程的创建和管理变得简单直接。以下是一个简单的示例,展示了如何在C++中使用。

2024-07-11 14:26:17 326

原创 C++:获取当前可执行核心数(开辟线程)

是一个在 POSIX 兼容系统上广泛使用的函数,它用于获取当前系统上可用的处理器(CPU 核心)的数量。这个函数是sysconf函数的一个特定调用,其中是一个常量,指定了要查询的系统配置变量的类型。

2024-07-11 13:58:19 168

原创 C++:strcut与class的区别

在C++中,struct和class在语法上非常相似,但它们之间确实存在一些关键的差异,这些差异主要体现在成员的默认访问权限和继承的默认方式上。然而,从更广泛的角度来看,它们都可以用来定义自定义数据类型,包含数据成员(属性)和成员函数(方法)。

2024-07-11 11:27:47 392

原创 C++:cv::boundingRect()函数解析

函数是 OpenCV 库中的一个函数,用于计算并返回一个点集的边界矩形。这个函数特别有用,当你已经找到了一些轮廓(contours)或者任何其他形状的点集,并希望获得一个能够包围这些点的最小矩形时。InputArraycv::Mat返回值是一个cv::Rect对象,它表示了边界矩形的位置和大小。cv::Rect。

2024-07-10 23:51:31 326

原创 C++:cv.contourArea()函数解析

是OpenCV中用于计算封闭轮廓面积的函数。它接受一个轮廓作为输入,并返回该轮廓所包含区域的面积,单位为像素。轮廓通常是通过函数从二值化图像中提取的。

2024-07-09 11:48:33 352

原创 C++:cv::findContours()说明

是 OpenCV 库中一个非常重要的函数,用于在二值图像中查找轮廓。该函数可以检测图像中对象的边界,并返回这些轮廓的坐标信息,这些轮廓信息通常用于对象检测、分割和形状分析等任务。以下是对。

2024-07-09 11:35:53 374

原创 C++:cv.threshold

是 OpenCV 中用于图像阈值化处理的强大工具,它支持多种阈值类型,可以满足不同的图像处理需求。通过调整阈值和阈值类型,我们可以有效地将图像中的目标区域与背景分离开来,为后续的图像分析和处理提供便利。

2024-07-09 11:23:54 361

原创 C++:cv.absdiff函数含义

在OpenCV库中,absdiff函数是一个非常重要的图像处理函数,其意义在于计算两个输入数组(通常是图像)之间对应元素差的绝对值。这个函数在图像处理和计算机视觉领域有着广泛的应用,如图像对比、运动检测等。

2024-07-09 11:15:15 468

原创 C++:.front()函数作用

在C++中,.front()函数是容器(如std::dequestd::list的某些实现等)的成员函数,用于访问容器中的第一个元素。这个函数返回对容器中第一个元素的引用(对于非const容器)或const引用(对于const容器)。

2024-07-08 11:43:44 376

原创 C++:filter2D函数简要概述

OpenCV中的filter2D函数是一个非常强大的工具,用于对图像进行卷积操作,从而应用各种线性滤波器。这个函数能够处理图像中的每个像素,通过将其与指定的卷积核(或称为滤波器)进行卷积运算,来修改图像的特性。以下是关于filter2D。

2024-07-08 11:21:44 380

原创 C++:cv::Mat的列数与行数属性

同样地,对于一个二维矩阵或图像而言,行数是指垂直方向上元素的数量。在图像处理中,这通常对应于图像的高度(height)。在图像处理中,这通常对应于图像的宽度(width)。这个类提供了丰富的功能来操作这些数据,包括访问、修改和转换数据等。属性,如果它们在你的OpenCV版本中是公开的)来获取图像的尺寸,或者使用这些信息来遍历图像的像素。类型的向量表示,其中包含了该像素的蓝色、绿色和红色分量。类的一部分,允许你轻松地查询和操作矩阵或图像的尺寸。属性分别代表矩阵(或图像)的列数和行数。来访问和修改像素值。

2024-07-08 09:40:26 341

原创 C++:CV::Point函数简介

cv::Point是 OpenCV 库中用于表示二维坐标系下点的一个基本数据类型。它提供了在图像处理、计算机视觉等领域中定位和操作点的能力。以下是关于cv::Point。

2024-07-08 09:17:34 527

原创 C++:对象指针访问成员函数

在这个例子中,两种调用方式都会输出 "Function called",表明它们在功能上是等价的。然而,为了代码的清晰和一致性,建议使用箭头操作符 () 来调用该对象的成员函数。这种方式虽然有效,但在实践中不如使用箭头操作符那么常见或推荐。是最常用和推荐的方式,因为它更简洁、更直观。来解引用指针,得到它所指向的对象,然后使用点操作符 () 配合指针一起使用,以便通过指针访问对象的成员。) 更为简洁,并且更符合 C++ 的惯用风格。两种方式在逻辑上是等价的,它们都会调用由。然而,使用箭头操作符 (

2024-07-05 09:10:14 211

原创 C++: Map数组的遍历

map在C++中,map是一个关联容器,它存储的元素是键值对(key-value pairs),其中每个键都是唯一的,并且自动根据键来排序。遍历map的方式有几种,但最常用的两种是使用迭代器(iterator)和范围基于的for循环(C++11及以后版本)。这里我将展示这两种方法的示例。

2024-07-04 14:58:30 317

原创 C++:对象begin()->second

函数是一个非常重要的成员函数(或对于非成员函数容器,如标准库中的容器,它是一个全局函数),它返回一个指向容器中第一个元素的迭代器(iterator)。迭代器是一种允许程序遍历容器(如数组、向量、列表等)的对象,类似于指针,但更加通用和灵活。这些容器中的元素通常是成对出现的,即键值对(key-value pairs)。的意思是:获取容器中第一个元素的迭代器,并访问这个元素的。:由于容器中的元素是键值对,每个元素都有一个。:这个对象是一个能够存储多个元素的容器,如。,我们获得了指向容器中第一个元素的迭代器。

2024-07-04 09:20:07 228

原创 C++:静态函数的作用

静态函数对于程序的内存使用和性能通常没有直接影响,因为它们的可见性和链接性是由编译器处理的,而不是在运行时。然而,通过使用静态函数,你可以减少全局命名空间的污染,这有助于避免命名冲突,并使代码更加模块化和清晰。:静态函数的作用域限定在定义它们的文件内。即使你在其他文件中声明了同名的非静态函数,这两个函数也是完全独立的,互不影响。函数)的作用主要是限定该函数的可见性和链接性,而不是直接关联于函数的返回类型或参数列表(尽管你提到了。,将会导致编译错误,因为该函数是静态的,无法被其他文件访问。

2024-07-02 16:43:51 256

原创 c++:#include 某文件.h底层如何寻找其.cpp实现

然后,链接器负责将这些目标文件(以及任何库文件)链接成一个可执行文件或库。链接器会查找并解析在目标文件中引用的外部符号(即在其他。中正确地引用了这些声明,并生成包含对这些声明引用的机器码的目标文件。的源文件时,编译器会处理这个包含指令,将头文件的内容插入到该源文件中,但它不会直接处理实现文件(并使用其中声明的类或函数时,你实际上是在告诉编译器你希望使用这些声明。简而言之,你只需要包含头文件,而不需要包含实现文件。中定义的函数和变量),并将它们链接到最终的可执行文件中。文件中定义的函数和变量的机器码。

2024-07-02 16:17:21 141

原创 C++中的虚函数与Java中的接口区别

在C++和Java中,虚函数(virtual function)和接口(interface)虽然都用于实现多态性,但它们在设计和使用上有着本质的区别,因此不能简单地将C++中的虚函数理解为Java中的接口。

2024-07-02 15:55:15 403

原创 C++:枚举类的使用案例及场景

枚举类可以像其他类一样,拥有成员函数(包括构造函数、析构函数和操作符重载等)。这提供了更多的灵活性和可扩展性。

2024-07-02 15:02:45 443

原创 C++:const及&引用的使用场景

不加引用也是可以的,因为编译器可能会优化掉这些拷贝操作(特别是当它们发生在局部作用域内时)。但是,即使在这种情况下,加上引用和。:加上引用可以避免不必要的拷贝,从而提高性能。在这种情况下,即使你不打算修改元素,也建议加上引用(但通常还需要保留。是一个好习惯,因为它可以防止在循环体中不小心修改元素。)并不是必须的,但它通常是一个好习惯,尤其是当。对象),并且你正在遍历它而不是修改它,所以。但是,请注意,如果你的循环体确实需要修改。,但仍然可以保留引用以避免拷贝,即。然而,在这个特定的例子中,由于。

2024-07-02 10:40:08 200

原创 C++:二维数组的遍历

【代码】C++:二维数组的遍历。

2024-07-02 10:28:47 229

原创 ImageJ图片之间的相减操作

需要注意的是,如果你的图片是RGB格式的,相减操作可能会产生一些意外的结果,因为RGB图像包含红、绿、蓝三个通道,每个通道都需要单独处理。在这种情况下,你可能需要先将RGB图像转换为灰度图像,然后再进行相减操作。

2024-07-01 13:40:14 205

原创 C++:auto命令的含义

的好处之一是它可以使代码更加简洁,尤其是在处理复杂类型或模板编程时。此外,当类型名称很长或不明显时,使用。关键字被引入,使得程序员在声明变量时不必明确指定其类型,编译器会根据初始化表达式自动推断出变量的类型。可以使代码更简洁,但在某些情况下,明确指定类型可以提供更多的上下文和可读性。因此,在决定是否使用。是一个类型说明符,用于自动推断变量的类型。可以提高代码的可读性。时,应权衡这些因素。

2024-07-01 08:31:35 252

原创 C++函数不完整声明报错

在调用add时,main中为它提供了两个参数,看起来可以被转换成double类型。然而调用add时,不会对1和2进行类型转换。它们是被作为整型数据压入栈中的,结果自然不对。挡在c++中声明如下的函数代码段时,不会进行隐式的转换。

2024-06-29 13:59:02 243

原创 C++枚举类

在C++11及以后的版本中,引入了枚举类(也称为强类型枚举或作用域枚举),这是对传统枚举(C风格枚举)的一个改进。枚举类提供了更好的类型安全和作用域控制。

2024-06-29 10:53:04 145

原创 Git clone解释

的新目录(除非你已经指定了不同的目录名),并将远程仓库中的所有内容复制到这个新目录中。然后,你可以在这个目录中执行 Git 命令来查看提交历史、创建新的提交、创建新的分支等。是一个 Git 命令,用于从远程 Git 仓库复制一个仓库到本地计算机。执行这个命令后,Git 会在当前目录下创建一个名为。

2024-06-28 11:46:42 228

原创 Git拉取、切换分支等操作

当你在本地计算机上通过git clone命令克隆了一个 Git 仓库后,你会得到一个与远程仓库相对应的本地副本。这个本地副本包含了远程仓库的所有历史记录、分支、标签等。接下来,我会详细解释在该目录下启动 Terminal 并使用 Git 命令来查看和切换分支,以及执行其他 Git 命令的操作。

2024-06-28 11:27:02 586

原创 QT:libimf.so cannot open shared object

推荐将环境变量保存在~/.profile中,因为无论是通过控制台还是图形界面启动程序时,都会自动执行该文件。而~/.bashrc,~/.bash_profile,~/.bash_login这些文件,当通过shell启动程序时,它们也会被加载;但当通过图形界面环境启动程序时,这些文件中的环境设置便不可用了。针对云环境启动QT问题。

2024-06-28 11:20:38 113

原创 重启ubuntu后命令行出现(initramfs),无图形界面问题。

出现fix表示就在修复了,只要一路y确认就可以了。修复完成后会出现FILE SYSTEM WAS MODIFIED信息表示修复成功。这里表示进入图形界面初始化时,某个分区的文件损坏,损坏文件名称会在上方显示。

2024-06-27 13:51:15 220

原创 VGG不收敛的问题

原文的代码的复现是没有BN层,而现在以torch训练不加BN是无法收敛的。在卷积后面加个BN归一化特征范围。

2024-03-23 21:13:53 145

原创 VGG介绍及Pytorch实现

VGG是一种经典的卷积神经网络架构,由牛津大学视觉几何组(Visual Geometry Group)提出。VGG以其简单而有效的设计而闻名,其核心思想是通过多层深度的卷积和池化层来逐渐提取图像特征,并且通过堆叠多个卷积层和池化层来增加网络的深度。VGG网络结构中主要采用3x3大小的卷积核和2x2大小的最大池化核,这种统一的设计使得网络架构非常规整,易于理解和实现。VGG网络共有多个版本,其中VGG16和VGG19是最为常用的两个版本,分别包含16和19个卷积层,以及若干个全连接层。

2024-03-23 21:10:59 362

原创 CBAM解析及代码(Pytorch)

CBAM,全称Convolutional Block Attention Module,是一种注意力机制模块,用于增强卷积神经网络(CNN)的特征表达能力。该模块由通道注意力模块和空间注意力模块两部分组成,能够分别关注输入特征图的通道信息和空间信息,进而提升模型对于重要特征的关注度。在通道注意力模块中,CBAM通过全局平均池化和最大池化操作捕获通道间的依赖关系,生成两个通道描述子。这两个描述子随后通过共享的全连接层和ReLU激活函数进行变换,再经过Sigmoid函数得到通道注意力权重。

2024-03-23 21:04:27 1490

原创 Python:filter过滤器

是 Python 中的一个内置函数,用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。该函数接收两个参数,一个是函数,一个是序列,序列的每个元素作为参数传递给函数进行判定,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。

2024-03-18 22:39:39 325

原创 Python:字典的合并

【代码】Python:字典的合并。

2024-03-18 22:02:50 113

原创 Python:字典取值及循环遍历

【代码】Python:字典取值及循环遍历。

2024-03-18 21:52:17 116

原创 Python:列表转换为字典

【代码】Python:列表转换为字典。

2024-03-18 21:42:02 83

原创 Python:列表、元组及字典的生成式表达

【代码】Python:列表与元组的生成式表达。

2024-03-18 21:15:31 245

原创 这就是顶会中的“MLP”

全连接被卷积覆盖,给位写论文的琢磨琢磨这些操作吧。

2024-03-06 16:36:26 116

空空如也

空空如也

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

TA关注的人

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