C++[26]
相机视频流的编码格式
VideoWriter 类 最近几个项目都需要保存相机图像数据,也就是存成视频。有的要求保存源视频,有的要求保存处理后的视频。 由于图像数据的读取使用 OpenCV,目标检测框架也是建立在 OpenCV 的基础上,所以保存图像顺理成章也使用 OpenCV。这里主要使用 OpenCV 的 VideoW
PCIe-GL26设备将GMSL相机图像发送至HOST端
PCIe-GL26 先看看 PCIe-GL26 是个什么设备。 本质上,它是一个自带 Jetson Xavier 系统,且带有 6 路 GMSL2 接口的图像采集卡。 GMSL2 是 Gigabit Multimedia Serial Link 2,注意这个和 GIGABYTE 技嘉科技 没啥关系。
我还在学CUDA编程(四)——内存的层次结构
CUDA 内存模型 存储器的类型有两种: 可编程:显式控制哪些数据存放。 不可编程:不能决定数据存储位置。 在 CPU 层次结构中,一级缓存(L1 Cache)和二级缓存(L2 Cache)都是不可编程的。 可编程的存储器类型包括: 寄存器 共享内存 本地内存 常量内存 纹理内存 全局内存 下图为上
OpenCV 的 remap() 函数中的 map1 和 map2
今天在 StackOverflow 上看到这么个问题:想把原图像中的一个点 \textstyle g,通过内参和畸变参数映射到去畸变图像中的点 \textstyle p,并获取这个点的坐标。 你以为我接下来会说,xxx 和我想的一样,但是我想错了,其实并不是这样。 现在,我想说的只有其实并不是这样,
继续学CUDA编程(三) —— CUDA执行模型(下)
并行归约问题 先解释一下什么是 归约(Reduction),归约是将某个计算问题变换为另一个问题的过程。在 CUDA 运算中,在向量中执行满足交换律和结合律的运算,被称为归约问题。每次迭代计算方式都是相同的(归),从一组多个数据最后得到一个数(约)^{[1]}。比如当给定 N 个数值,求其 SUM/
继续学CUDA编程(三)——CUDA执行模型(上)
这一部分是 CUDA 的核心部分,涉及到了硬件和程序的执行模型。 CUDA 的执行层级是 Grid → Block → Warp → Thread,而真正被硬件调度的基本单位其实是 Warp,而不是 Thread。 然后必须先记住 CUDA 的约定: threadIdx.x → 列(col) thr
“我还要学CUDA编程!”(二)——CUDA编程模型
CUDA 编程结构 在 GPU 上执行的函数称为 CUDA 核函数(Kernel Function),核函数会被 GPU 上多个线程执行。典型的 CUDA 程序遵循如下模式: 把数据从 CPU 内存(Host)拷贝至 GPU 内存(Device) 调用该 Kernel 函数,对 Device 中的数
”我要学CUDA编程!“ —— 来自一个废物的自白
写在前面(废话,请跳过) 本来自己的脑子里是不存在 CUDA 编程这个东西的,没错,就是压根儿没听说过。 之所以了解到这个东西,是因为最近开始做 AVM(Around View Monitor),或者说 SVS(Surrounding View System),利用 4 个广角相机,实现车辆周围的
初识UDP协议
写在前面 为什么突然急头白脸地学 UDP,这源自领导安排的一个坑爹的活。 懂计网的同事出差了,而我作为部门里仅剩的一个会 C++ 的,被光荣地安排去做 RSU 和 OBU 的通信测试,而它们用的通信协议正是 UDP。可我不会啊,我除了对 TCP 的握手和挥手还有点印象,对其他协议几乎一无所知。 好在
为ARM架构下的OpenCV添加FFMPEG支持
之前自己从未考虑过这个问题。每次手动编译 OpenCV 的时候,cmake 后面的 -D xxx对我来说只是添加某个支持,但我并不知道 OpenCV 编译本身也是依靠 CMake 配置完成的,而 CMake 找到这些依赖,很多时候又依靠 pkg-config 工具。 文章最下方是我在编译 OpenC