Protobuf:安装指定版本

第一次接触Protobuf,遇到了系统版本与编译文件版本不统一的情况,以优先解决问题的考虑出发,考虑先把版本统一,验证代码是否可行,之后再来研究版本更新的问题。 ...

Linux:创建具有权限限制的新用户

创建一个具有限制权限的用户,同时确保这个用户不能访问其他用户的文件或目录,可以通过以下步骤进行: 1. 创建新用户 使用useradd命令创建一个新用户。可以指定用户的主目录、默认shell等。例如,创建一个名为newuser的用户: ...

Linux:内核启动不了之后

遇到了Linux新的内核启动卡死,老内核正常运行,索性就启动不了内核进行删除。 1. 查看当前运行的内核 在终端运行以下命令: uname -r 会得到下面这样的信息: ...

TensorRT:最简明的安装流程

以下记录安装的TensorRT环境安装的最简单,也是最正确的流程。 因为很多时候依赖装乱了,直接装TensorRT会出现一堆依赖不存在的问题,因此需要按照顺序一步一步安装 ...

开发实战:使用Spdlog管理调试信息

此前写代码,习惯性 std::cout 和 std::cerr 这种直接可视化的打印,然后满屏密密麻麻的打印信息,而如果不需要了,就会在代码大段大段的注释,非常不美观,甚至可以说是一堆堆💩。。。 ...

开发实战:项目中的CMake技巧

一个“好看”的CMake管理应该是这样的: ├── CMakeLists.txt ├── main_class.cpp ├── main.cpp ├── model │ ├── seg_0415.onnx │ └── seg_0415.trt ├── Parser │ ├── CMakeLists.txt │ ├── data_frame_parser.cpp │ └── data_frame_parser.h ├── RoadSeg │ ├── CMakeLists.txt │ ├── road_segmentation.cpp │ └── road_segmentation.hpp ├── TCPClient │ ├── CMakeLists.txt │ ├── tcp_frame_client.cpp │ └── tcp_frame_client.h ├── Test │ ├── main_simple.cpp │ ├── ptr_mat.cpp │ └── test_main.cpp └── Utils ├── CMakeLists.txt ├── logger.cpp └── logger.h 具体而言,比如Parser下面的CMakeLists.txt: ...

开发实战:给代码属上大名

关于代码💩山,已经不忍直视。。。 只希望自己能够写出整洁、大方、有魅力(又美丽)的代码。 所以呢,得给代码属个大名。 vscode用的久了,以此为例吧?(其实CLion体验更好,那未尝不试试呢!) ...

Shell:操作移动文件

主打一个“懒”字! 移动文件啊,重命名啥的,动手拖拖不行嘛?! 不行!用键盘,用命令行! 比如: 想要移动 ZYC01981 - 01.jpg,同时又想把 - 01 后缀给去掉,怎么做? ...

开发实战:解析H.264编码和LZ4压缩的相机图像

在上一篇打通了读取字节流文件后,能够得到每一帧的字节数据了,这一篇就来解决为这些数据赋予实际意义。 彩色图像采用H.264编码 -> 那就需要按照H.264解码 视差图像采用LZ4压缩 -> 视差图保存的16位无符号整数,采用LZ4解压缩(开源) 背景知识 LZ4 LZ4 是一个非常快速的压缩算法,提供了实时压缩速度和非常快的解压缩速度,由 Yann Collet(FaceBook大佬) 开发。它属于无损压缩算法,意味着压缩后的数据可以完全恢复到其原始形态。LZ4 主要设计用于非常高速的场景(解压速度可以达到数GB每秒),例如实时数据传输、日志数据处理等。 ...

开发实战:解析二进制文件

需要解析相机的字节流文件(就是一个一个Byte组成的文件,不解析的话没有啥实际意义)。 解析需要按照一定的规则,比如:如何确定数据的头(Header),以及一个数据帧(一个数据包)的结构是什么样的,这个有点像网络包的定义,在头部定义了很多信息,这些信息能够让这个数据包按照规则解析出来后有具体的意义。 ...