- 博客(263)
- 资源 (2)
- 收藏
- 关注
原创 19.单目测距原理介绍
根据,1.基本相机模型及参数2.OpenCV相机标定这两部分的介绍,我们可以知道相机的基本模型,其原理本质上还是小孔成像,感光芯片记录下成像信息变成图片来实现的。现在我们来看下OpenCV相机标定的结果,为了简化介绍,畸变系数这里不再重复介绍,可以参考上面两个博客。
2024-05-28 13:05:29
2291
原创 招聘二则!!!重庆知名汽车厂商机器人视觉Leader招聘+深圳石岩上市公司机器人视觉感知算法工程师招聘!!!
面议,不低于市场平均水平。面议,不低于市场平均水平。邮件主题请说明意向公司。
2024-05-27 23:38:51
793
原创 33.perf工具使用
Perf(Performance Counters for Linux,性能计数器子系统)是一个Linux性能分析工具,用于分析系统和应用程序的运行时性能。这个工具位于Linux内核源代码树中,具体位置在tools/perf目录下。虽然它是一个用户空间的应用程序,但却是唯一一个被包含在Linux内核源码中的复杂用户软件。Perf可以帮助开发人员和系统管理员进行函数级和指令级的热点查找,可以用来分析程序中热点函数的CPU占用率,了解CPU。
2024-05-26 15:01:38
1029
原创 32.strace/ltrace命令及其使用
strace是一个强大的工具,用于跟踪程序执行时的系统调用和接收到的信号。通过strace,可以了解程序在运行时请求了哪些系统调用,这些调用的参数是什么,以及操作系统对这些调用的响应。这对于调试程序、分析程序行为和优化性能非常有用。诊断程序错误:通过分析程序与操作系统之间的交互,可以帮助找到错误和异常的原因性能分析:通过查看系统调用的时间、数量和类型,可以识别潜在的性能瓶颈安全分析:检查程序是否进行恶意行为,如不当访问文件、套接字等。
2024-05-25 01:06:32
628
原创 31.GDB介绍及简单使用
命令运行程序,当程序运行到断点处时,程序会自动停止。命令可以直接运行程序,也可以调试程序,在运行程序时,可以通过。可以同时查看源码,汇编代码和控制调试指令输入。命令运行程序,在调试程序时,可以通过。GNU GPL`协议公开发布。的时候可以借助文本用户界面。来提升代码调试的体验。欢迎访问个人网络日志🌹🌹。查看当前函数的汇编代码。
2024-05-24 22:45:27
583
原创 30.静态代码分析工具clang-tidy
clang-tidy是一个基于 clang 的 C++ “linter” 工具。其作用主要是用来检查和修正代码中的典型编程问题,像代码风格/接口误用/通过静态分析可定位到的bug。clang-tidy模块化功能做的很好,有预留接口,非常便于实现新的代码检查功能。
2024-05-21 23:13:37
1344
原创 29.LLVM及Clang介绍
和GCC一样,LLVM也是编译器,GCC是由GNU开发的编程语言编译器,是GNU项目的关键部分,也是自由的类Unix及苹果电脑Mac OS X操作系统的标准编译器。LLVM本身不是缩略词,项目的名称就叫这个。该项目于2000年由美国伊利诺伊大学厄巴纳-香槟分校的和发起的,他们的目标在于提供一种基于静态单赋值SSA现代编译策略能够支持任意编程语言的静态和动态编译的工具。LLVM首次发布是在2003年。
2024-05-19 23:48:52
1052
原创 28.C++加速编译工具ccache
ccache是一个编译器缓存工具,它通过缓存之前的编译结果来加速重新编译的过程。当再次进行相同的编译时,ccache可以检测到并直接从缓存中获取结果,从而避免了重复的编译过程。支持GCC、Clang、MSVC(Microsoft Visual C++)等类似的编译器3。在Linux、macOS、其他类Unix操作系统以及Windows上工作。理解C、C++、汇编器、CUDA、Objective-C和Objective-C++。
2024-05-17 22:35:27
984
原创 27.STL vector容器emplace_back和push_back的区别
C++标准库提供了函数,可以直接调用对像的构造函数,避免不必要的复制和移动。
2024-05-16 23:42:27
408
原创 26.ELF文件解析
欢迎访问个人网络日志🌹🌹🌹🌹ELF(Executable and Linked Format)是UNIX系统实验室(USL)作为应用程序二进制接口(Application Binary Interface)开发和发布的可执行链接格式。ELF文件是Linux目标文件格式既参与程序执行也参与程序链接。
2024-04-21 20:47:34
1121
原创 25.设置及使用coredump文件
核心转储是一个包含进程意外终止时进程内存内容的文件。核心转储由内核触发以响应程序崩溃。核心转储作为崩溃时程序状态的事后快照非常重要,特别是在故障难以重现的情况下。
2024-04-10 22:24:28
1473
原创 24.Linux下程序调试分析工具`Valgrind`
Valgrind是开源的Linux程序调试工具,可以用来自动检测程序中存在的内存管理,线程同步的问题,帮助开发人员提升代码调试的效率。Valgrind还可以输出程序的Profile信息,方便开发者定位程序中的性能问题。Valgrind是开源的Linux程序,开发者可以根据需要自行修改源码后编译。Valgrind支持主流的Linux系统,包括x86/Linux和。Valgrind功能强大,是大型复杂程序调试和系统profile分析的必备工具。Valgrind。
2024-04-09 23:17:41
753
原创 23.C++11引入的内存序
欢迎访问个人网络日志🌹🌹🌹🌹内存序是为了在做原子操作时,控制多线程间内存可见性的一种机制,从而有助于避免数据争用并确保正确同步。之所以要对原子操作的内存序做限制还是在于编译器编译时和cpu运行指令时会对指令做重排优化。这可能会导致意外的结果。关于指令乱序可以参考。c++11中引入的原子类型上的操作服从6是可选的最严格的内存次序,各种原子类型的所有操作都默认遵从该次序,除非我们特意为某项操作另行指定。内存次序共有6种,但它们只代表3。
2024-03-31 16:00:40
1046
原创 22.C++中的原子操作
是一个模板,除了前面介绍的bool外还支持等多种类型特化。原子操作在多线程编程中是非常有用的,可以帮助我们避免很多问题,但是原子操作也有一定的代价,它可能会影响程序的性能。所以,在程序中使用原子操作时,需要根据实际情况,权衡性能与并发性的关系。欢迎访问个人网络日志🌹🌹知行空间🌹🌹。
2024-03-28 00:46:07
1350
原创 21.Linux进程间通信IPC之共享内存和信号量
信号量是一种用于多线程或多进程之间同步的机制。信号量(Semaphore),是在多进程环境下使用的一种设施, 它负责协调各个进程, 以保证它们能够正确、合理地使用公共资源。信号量分为单值和多值两种,单值信号量只能被一个进程获得,多值信号量后者可以被若干个进程获得。需要包含头文件信号量可以用来保证两个或多个关键代码段不会被并发调用。共享内存可以说是Linux下最快速、最有效的进程间通信方式。
2024-03-26 01:12:22
1077
原创 目标检测7-DETR算法剖析与实现
DETR是的等于2020年05月提交的论文中提出的。论文地址:开源代码:将目标检测问题看成是集合预测的问题,所谓集合预测是指一次输出一张图像中的所有待检测对象。DETR使用来做目标检测,直接预测检测框到检测框中心点归一化的距离。在模型训练时,使用的算法是一对一的匈牙利算法,通过query的方式获取最后的输出。以上介绍的策略,使得DETR实现了目标检测算法的端到端训练,不需要使用NMS和先验anchor。
2024-02-21 22:40:26
1054
1
原创 21.图形化桌面环境的shell文本菜单
建好菜单布局和函数后,就需要设置菜单逻辑了,这需要用到case命令。case命令应该根据菜单中输入的字符来调用相应的函数。;1);2);3);*)clear;;1);2);3);*)clear;esacdoneclear上面的脚本中echo -en是输出非打印字符,其中n表示不换行。上面的脚本,只有在输入的。
2024-01-14 22:34:22
1107
原创 5.Pytorch模型单机多GPU训练原理与实现
当我们使用的模型过大,训练数据比较多的时候往往需要在多个GPU上训练。使用多GPU训练时有两种方式,一种叫,一种是。方式,是在模型比较大导致一张显卡放不下的时候,将模型拆分然后分别放到不同的显卡上,将同一份数据分别输入进行模型训练。这种对模型结构各模块之间有联系时很不友好,有可能都不支持拆分。因此,应用更广泛的是的方式。方式,是将相同的模型拷贝到不同的显卡上,然后将数据平均划分后输入到相应显卡上进行计算,然后根据计算结果更新模型的参数。方式更新模型参数。
2024-01-14 15:20:02
1657
原创 18.numpy.where的使用
condition: 条件x:数组,shape同condition或支持广播y:数组,shape同condition或支持广播根据condition从x或y中取数值,如果condition条件为True取x对应位置的元素,否则取y对应位置的元素。
2024-01-10 22:23:22
491
原创 20.Linux Shell自定义函数
在脚本中一遍又一遍地编写同样的代码会很烦人,为了避免这种麻烦,可以将代码封装成函数,多次引用。采用关键字functioncommands }函数名后跟空括号name() {commands }执行,$ ./test.sh # ./test.sh: 行 3: sayHello:未找到命令 # Hello, Bash Shell. # Hi, Bash Shell. # Hi2, Bash Shell.每次引用函数名时,bash shell会找到函数的定义并执行在那里定义的命令。从上面的例子可以看到,
2024-01-10 21:37:15
1682
原创 17.Linux Shell输入输出流管理
前面介绍的是3个标准的文件描述符的重定向,除此之外每个进程还支持自定义6个打开的文件描述符。可以用exec命令来给输出分配文件描述符。/bin/bash执行,以上就是自定义了输出文件描述符3到文件test3out中,上面会创建新文件test3out,也可以不创建新文件,而使用追加的方式,可以分配另外一个文件描述符给标准文件描述符,这样就可以恢复已重定向的文件描述符了。/bin/bashexec 3>&1exec 1>&3执行,上面的例子,是先将文件描述符3重定向到STDOUT,再将STDOUT。
2024-01-06 17:49:41
1303
原创 14.bash shell中的for/while/until循环
命令允许定义一个要测试的命令,然后循环执行一组命令,只要定义的测试命令返回的是退出状态码 0。在 test 命令返回非零退出状态码时, while 命令会停止执行那组命令。命令用空格来划分列表中的每个值。将一系列值都集中存储在了一个变量中,然后需要遍历变量中的整个列表。在上面的命令中使用重定向,可以将循环中命令的结果保存到文件中。命令可以提前中止某次循环中的命令,但并不会完全终止整个循环。会执行指定的多个测试命令,只有在最后一个命令成立时停止。命令中,只要定义的测试命令返回的是退出状态码。
2023-12-26 23:59:12
1389
原创 19.C++ 中将一维数组转成多维的三种方式
操作符可用于将一个指向基类的指针转换为指向子类的指针。但是这样的转换不总是安全的。reinterpret_cast作用为:允许将任何指针转换为任何其他指针类型。数组的首地址,reinterpret_cast后将这个转换结果赋值给了。它可以强制性的将一个指针类型转换成另一种不会做检查,因此就不需要先转成。的引用,如此就完成了类型转换。是取指针的值,也就是数组的首地址,类型转换是有保护的,如果同样能使用。指针中的元素个数,防止越界。欢迎访问个人网络日志🌹🌹。转换约束的限制,如果使用。是一个数组变量的引用,
2023-12-02 10:43:19
644
原创 17.PIL报错`AttributeError: module ‘PIL.Image‘ has no attribute ‘ANTIALIAS‘`
欢迎访问个人网络日志🌹🌹🌹🌹。
2023-11-30 21:49:02
3316
2
原创 1.UML面向对象类图和关系
关联关系表示的是对象之间的引用关系,其对应到现实世界中通常是动词连接的两个主体类别之间的关系,像老师教学生,学生选择课程。现在我们一起来看下。泛化是一般的类和更具体的类之间的关系。依赖关系的表示的是一种使用关系,考虑一个类的对象的方法中使用了另一个类的对象,作为函数参数或方法的局部变量,这时就是依赖关系。其表示的是部分和整体的关系,一个类是另一个类的一部分,两个类有单独的生命周期,可以分离存在。组合是一种比聚合更强的关联关系,聚合中整体和个体可以分别单独存在,但在组合关系中表示的是个体无法脱离整体存在。
2023-11-05 19:34:52
650
1
Springer-handbook-of-robotics-second-edition,pdf,epub
2017-11-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人