自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 一 OpenCV中的数据类型

⑤ cv::Rect2f float表示的矩形。④ cv::Rect2i int表示的矩形。① cv::Point3_<T> 表示三维点。② cv::Rect_<float> float表示的矩形。② cv::Rect_<int> int类型的矩形。③ cv::Rect_<long> long表示的矩形。cv::Point p(int, int) 最常用。主要用来表示二维点,也有表示三维点的模板类型;向量,可以用来表示点。

2023-12-13 19:18:06 1040

原创 一 Eigen中常用数据类型

Eigen 库提供了多个数据类型用于线性代数运算。

2023-12-13 18:53:08 1405

原创 std::function

通过使用std::function,可以将不同类型的可调用对象封装成统一的格式,从而使用相同的接口进行调用;在设计回掉函数、事件处理 、函数对象等场景中十分有用。int result = myfunc(2) 调用封装的函数指针。2. 声明一个对象,返回类型(参数类型)3.2 封装lambda表达式。② 封装lambda。3.1 封装函数指针。3.3 封装成员函数。

2023-12-08 10:04:35 515

原创 不同类型变量的初始化

② d1.ptr(int(keypoints_1[m.queryIdx].pt.y)) 该行指针。③ d1.ptr(行号)[列号] 该列的像素值。三维点:cv::Point3f。1. 二维点:cv::Point2f。① ushort类型。

2023-12-08 00:33:28 431

原创 std::enable_shared_from_this

能够让一个对象(名称为t,并且被一个std::shared_ptr对象pt管理),安全生成其他额外的std::shared_ptr实例(名称为pt1、pt2),它们与pt共享t的所有权。当T的对象被shared_ptr对象pt管理时,调用T::shared_from_this(),将返回一个新的shared_ptr对象,并且与pt共享t的所有权;如果一个类T继承了std::enable_shared_from_this<T>,那么T类中就有了继承自父类的成员函数shared_from_this。

2023-11-25 16:05:04 570

原创 Learning Perception Module

2023-11-19 00:55:41 331

原创 复合、委托、继承

2023-11-18 21:12:47 164

原创 Transformer

Transformer会将所有的输入同时进行处理,忽略了单词之间的序列(先后)关系,所以。对于句子中的每个字,按照字进行切分,每个字会对应一个512维的字向量;下面的这几个参数是共享的,即100个词,共享这一套参数u、w、v。对于Transformer而言需要对输入进行位置编码;RNN会按照输入顺序,对每个字进行处理。1)输入部分:Embeding + 位置编码。2.1)embedding:NLP中范畴。2.3)RNN与Transformer。2.2)RNN输入形式。

2023-11-17 07:36:12 157

原创 Apollo工程结构

2023-11-16 11:28:37 164

原创 操作符重载

重载=,还是挺常见的,有两个要注意的地方;

2023-11-15 23:46:11 70

原创 内存泄漏、new、delete

内存泄漏、new过程、delete过程

2023-11-15 23:35:50 149

原创 【cmake】file、set、add_library

先将common_src、preprocess_src中的源文件路径组合到vision_source变量中,然后使用该变量作为源文件列表,将这些源文件编译成一个共享库。③ 使用add_library将vision添加到构建系统中,并将vision_source变量中的源文件添加到该。${common_src}用于引用common_src变量的值,将common_src中变量的值设置给。① 将路径中的文件保存到common_src变量中。使用变量的具体指,而不仅是变量的名称。设置变量,引用变量的值。

2023-11-15 13:58:07 243

原创 【bazel】 build使用

2023-11-15 08:08:48 1180

原创 cudamemcpAsync

是CUDA(Compute Unified Device Architecture)中的一个函数,用于在主机(CPU)和设备(GPU)之间异步传输数据。它可以在主机和设备之间进行内存复制操作,而不会阻塞主机线程的执行。进行数据传输时,需要确保传输的数据是有效的,并且要在使用传输完成的数据之前进行同步。此外,还需要适当处理CUDA错误码,以确保数据传输的正确执行。在传输数据时,可以选择使用CUDA流来进行并行操作,以进一步提高效率。函数能够在主机和设备之间异步传输数据,从而提高性能。最后,释放已分配的内存。

2023-11-13 14:39:26 2228

原创 mat.data

mat.data是指向OpenCV图像或矩阵数据的指针,通过mat.data,可以获取指向图像像素数据的指针,支持访问、修改图像中的像素值。同一像素位置的三个值是相邻的。

2023-11-13 13:54:40 652

原创 pragma omp parallel for

2023-11-13 11:13:20 1916

原创 相机畸变模型

2023-11-13 08:17:30 205

原创 dynamic_pointer_cast

用法:dynamic_pointer_cast是一个函数模板,接受两个参数,分别是要转换的指针和目标类型的指针类型。如果转换是引用类型,会抛出std::bad_cast异常。适用对象类型:dynamic_pointer_cast适用于智能指针类型,如std::shared_ptr和std::weak_ptr,用于进行智能指针的动态类型转换。dynamic_pointer_cast只适用于std::shared_ptr和std::weak_ptr类型的智能指针,用于进行智能指针的动态类型转换。

2023-11-13 07:59:39 2197

原创 cudaStreamCreateWithFlags

1. CUDA Runtime API中创建CUDA流的函数之一,允许创建一个CUDA流,并可以指定一些。2. ① pStream:指向cudaStream类型的指针,用于新创建的CUDA流;② flags: 用于设置流行为的标志位,可以设置不同的流类型。

2023-11-10 15:08:10 608

原创 <fstream><sstream>

2023-11-10 14:19:03 128

原创 cv::glob( )

2023-11-10 13:31:45 1133

原创 cudaMalloc( )

2023-11-10 13:18:12 800

原创 对象池使用

对象池,就是一定数量创建好的对象的集合,当需要创建对象时,先从池中获取,若池中没有符合条件的对象,再创建新的对象;当线程池需要销毁时,不做真正的销毁,而是将其setActivate,并存入池中,从而避免大量创建对象。生命周期 处于对象池中对象的生命周期比较久,维持大量对象也比较占用内存;有向用户提供对象的接口,当没有对象时可创建对象存入其中,并返回给用户。对象池劣势:脏对象 对象被回收之后,仍保留调用时的数据,持有上次的引用,导致内存泄漏;有用户归还对象的接口。对象池特点:对象池中有已经创建好的对象。

2023-11-10 11:06:51 79

原创 alignas关键字

alignas关键字用来设置内存对齐方式,最小是8字节,可以是16、32、64、128字节。若为32位对齐,实际数据不到32字节,但内存还是会占用32字节;若实际数据大于32字节,小于64字节,则内存占用为64字节;计算机也会进行内存对齐,但是不同机器对齐方式不确定;内存对齐的计算方法就是对齐数的整数倍,

2023-11-09 16:51:48 342

原创 enable_if

2023-11-09 15:10:31 205

原创 Eigen字节对齐问题

Eigen库为了使用SSE加速,在内存上分配了128位的指针,涉及字节对齐的问题,该种问题在编译时期不会报错,只会在运行时出现错误。

2023-11-08 20:28:06 459

原创 强制类型转换

dynamic_cast会对动态类型转换进行检查,动态类型转换分为向上转型、向下转型,其只会对向下转型进行检查,当向下转型不被允许时,dynamic_cast会进行阻止。C++对常量的处理过程类似于编译期间的#define,是一个值替换的过程,代码中所有的n在编译期间就已经被替换成了100;&a获取a的地址,地址的类型是const int*,使用constant_cast<int*>,可以将其转换为int*会对静态类型转换进行检查,若转换不被允许,则会被阻止;但是这里a的值与*p的值是不同的!

2023-11-08 19:24:47 82

原创 c++ “uint*_t” 数据类型

2023-11-08 11:28:28 314

原创 五 线程池

线程池一般是要复用线程,如果取一个task就分配个一个thread,执行完成之后再重新分配,是不现实的:c++的thread都是执行一个固定的函数,函数完成之后线程也就结束了。让每个thread创建之后,就去执行调度函数,循环获取task,然后执行;当线程池停止使用时,循环便停止,这样就保证了thread函数的唯一性,而且复用线程执行task;线程池中的线程会持续查询任务中是否有可用工作,当两个或者多个线程试图同时执行查询工作时,将会引发错误;所以,可以提前开辟好线程,等待任务来了之后进行处理。

2023-11-08 10:50:21 77

原创 memset使用方法

2023-11-08 10:31:18 453 1

原创 联合概率密度关联算法

① 本次观测与目标匹配总共有L个可行事件,这L个可行事件构成了事件空间(观测与目标关联)2) 量测关联指示器:可行矩阵中每行除第一个元素之外的和,表示在可行联合事件i中,第j个观。3) 目标检测指示器:可行矩阵除第一列之外,其他列元素求和,表示在可行联合事件i中,第t个。第2个可行事件中,量测是否关联到了目标,目标是否关联到了量测;第n个可行事件中,量测是否关联到了目标,目标是否关联到了量测;6) 第1个可行事件中,量测是否关联到了目标,目标是否关联到了量测;1) 有效矩阵,可行矩阵。

2023-11-06 23:58:05 164

原创 [四] 条件变量

3)当线程获取通知被唤醒之后(notify_one等),wait( )会自动调用std::mutex的lock( )使用std::condition_variable可以让消费者线程等待生产者线程生产出数据之后,再进行消费,避。2)当前线程被阻塞时,wati( )函数自动调用std::mutex的unlock( )释放锁,使得其他被阻塞。1)当前线程中使用wait( )后之后将被阻塞,直到另外一个线程中使用notify_one,可唤醒当。1)当条件为false时,线程会被阻塞;在锁竞争上的线程能够继续;

2023-11-06 08:29:52 81

原创 可变参数模板

void f(T head, Args... args) <参数, 参数包>template<typename T, typename... Args> <类型, 类型包>在c++11之前,无论类模板、函数模板,都只能接受一组固定数量的模板参数;在c++11,引入了变参模板;

2023-11-05 12:05:24 110 1

原创 三 单例模式、call_once使用

2023-11-04 08:53:07 123 1

原创 二 互斥量、lock_guard、unique_lock

lock_guard类构造函数被调用的时候自动加锁,构造函数被调用的时候自动解锁;(std::chrono::seconds(2)):如果无法获取锁,等待2s;mtx.lock();获取互斥量的所有权,互斥量的加锁。释放互斥量的所有权,互斥量的解锁。② std::defer_lock:不加锁,等待延迟。① std::timed_mutex:时间锁。):unique_lock的。

2023-11-03 08:08:04 91

原创 一 Thread线程库的基本使用

t.join( )在delete ptr前、后,得出的结果是不一样的。类中公有成员函数作为线程函数;类中私有成员函数作为线程函数;1.传入临时变量std::ref()4. 类中的函数、私有函数。

2023-11-03 07:52:05 82

原创 10.3 定制化操作 [p347]

test2接受2个参数,test2接收的2个参数,会作为test1的第3、5个参数;可以使用bind函数对参数进行重新排序,适用于比较大小的场景,使用bind函数对参数进行重新排序之后,不必在重新写一个函数。但是,对于find_if( )这种只能接受一元谓词的函数,使用接受两个参数的函数,来设置条件,就无法正常使用了;std::bind( )作为一个通用的函数适配器,接受一个可调用对象,并生成一个新的可调用对象。捕获列表只适用于局部非静态变量,表达式可以使用局部静态变量,以及所在函数之外的。

2023-11-02 20:24:38 135

原创 KD-Tree

2023-11-02 14:35:57 77

原创 Apollo感知【二】

2023-11-02 07:33:56 222

原创 【CMake】常用命令

aux_source_directory(. src_list):查找当前目录下所有源文件,并将名称保存到。② aux_source_directory( ),查找某个路径下的所有源文件。② 如果某个目录的 CMakeLists.txt 中使用了该指令,其下所有的子目录默认也包含了。② O2(是字母opq的o,大写的欧)是用来调节编译时的优化程度的,最高为-O3,最低。相当于定义了一个宏, 只不过这个宏是在编译的时候定义的,相当于源程序中的。同一个目录下,有多个源文件时,

2023-11-01 00:22:42 668

空空如也

空空如也

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

TA关注的人

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