- 博客(67)
- 收藏
- 关注
原创 基于EBAZ4205矿板的图像处理:09基于sobel边缘检测的图像锐化
sobel边缘检测,实际上就是对g=f(x,y)这个函数求导,其中x和y是像素点的坐标,g是像素点的灰度值,求导嘛,就是找出像素随着位置变化的梯度,像素数值变化大的地方自然就是图像中的边缘、边界了。sobel锐化就是将上述求导求出的梯度数值和卷积运算的滑动窗口的中心像素的灰度像素值加和,然后用加和结果替代中心像素的灰度像素值,当然这一加和的过程中,可以加上一个系数。这样我们就可以动态调整图像的锐化效果。
2024-05-24 17:23:05
395
2
原创 基于EBAZ4205矿板的图像处理:11阈值系数可调的图像局部阈值二值化
在EBAZ4205矿板上实现了阈值系数可调的摄像头实时图像的局部阈值二值化
2024-05-14 23:52:59
807
1
原创 基于EBAZ4205矿板的图像处理:10图像二值化(阈值可调)
我的项目是基于EBAZ4205矿板的阈值可调的图像阈值二值化处理,可以通过按键调整二值化的阈值,key1为阈值加1,key4为阈值减1,key2为阈值加10,key5为阈值减10,key54为阈值重置为128。
2024-05-05 21:55:20
1084
1
原创 基于EBAZ4205矿板的图像处理:03摄像头采集HDMI输出视频图像
这里只提供xdc的代码,其他代码请直接看正点原子的开源代码。我的代码和正点原子的只有三处不同。开源代码链接及其路径:领航者。
2024-05-02 08:53:09
467
原创 基于EBAZ4205矿板的图像处理:03使用VIO调试输出HDMI视频图像
下面是我的BD设计,vtc用于生成时序,注意,2021.2的vivado的vtcIP是v6.2版本,多了一个sof_state,我不太清楚他是干嘛的,实测没接也一切正常。VIO IP核用于实时调试数据,我们可以在program device后,通过它来实时地调整fpga内部的数据,极其的方便。VIO IP核的设置如下你同样也可以用它来读取FPGA里的数据,调整他的prode_in端口就可以了DVI_Transmitter_0是用于将HDMI时序和数据转化为TMS标准数据并输出给屏幕的。
2024-04-30 12:37:57
502
原创 TensorRT及CUDA自学笔记008 记录矩阵加法计算耗时demo
cudaDeviceSynchronize函数的功能是等待GPU完成运算任务,如果所提交计算任务失败,就会返回失败原因。
2024-03-02 00:27:59
364
原创 TensorRT及CUDA自学笔记006 PTX、PTX兼容性及二进制兼容性
compute_x中的x指的是虚拟机架构的计算能力后者是GPU的物理(真实)架构,前者是一种虚拟架构,是在后者的物理的基础上的面向上层的一种抽象的架构。CUDA将不同的物理架构的GPU抽象为不同计算能力等级的虚拟机架构,这样我们在上层能更好的使用这些GPU,同时,这种方式也提高了代码的兼容性。
2024-02-24 20:18:20
537
原创 TensorRT及CUDA自学笔记005 GPU架构和线程束
每一个SM包含整数个CUDA core、共享内存\L1缓存(shared memory\L1cache)、注册文件(Register File)、加载和存储单元(Load\Store Units)、特殊函数单元SFU(Special Function Unit)、Warps调度(Warps Scheduler)
2024-02-24 18:43:08
550
原创 TensorRT及CUDA自学笔记004 内核函数以及两个简单的内核函数demo
注意:文件后缀名应为.cu然后运行使用nvcc编译的可执行文件。
2024-02-24 13:09:02
431
原创 TensorRT及CUDA自学笔记003 NVCC及其命令行参数
NVCC是一种编译器,基于一些命令行参数可以将使用PTX或C语言编写的代码编译成可执行文件。
2024-02-24 12:45:28
537
原创 TensorRT及CUDA自学笔记003 CUDA编程模型、CUDA线程模型及其管理、CUDA内存模型及其管理
2,CUDA编程模型提供了内存访问控制,我们可以实现主机和GPU设备内存的控制,我们可以实现CPU和GPU之间内存的数据传递。内核函数中无法放在register中的变量会存放在local memory中,如无法确定下标的数值,较大的数据结构等。它是访问速度最快的内存,内核函数代码中没有任何其他修饰符的自动变量存放在register中,以此加快运行速度。静态分配时,使用__device__关键字修饰,动态分配时,在主机中使用内存管理函数。在CUDA编程中,它是内存数量最大、使用最多、延迟最大的内存。
2024-02-23 22:49:01
535
原创 TensorRT及CUDA自学笔记002 TensorRTsample_demo(内含完整代码和大量注释)
TensorRT 自学笔记002 sample_demo各位大佬,这是我的自学笔记,如有错误请指正,也欢迎在评论区学习交流,谢谢!代码来源本次笔记的代码来自英伟达官方在B站上的课程分享的链接(详见笔记001),我略微修改了代码,并加上了大量注释(详见下文,我附上了全部代码)重要知识点项目功能本项目的功能是创建一个只有一个identityLayer(恒等映射层)的网络、序列化网络并将其保存为.plan文件,随后加载.plan文件,为该网络输入一个维度为3x4x5张量,打印其计算结果标准的Tens
2024-01-13 18:40:02
467
原创 尝试添加服务器中正在运行的docker容器时报错:当前用户没有运行“docker”的权限
我的vscode通过ssh连到服务器,(在你没有切换用户前)它的一切操作在服务器那端被识别为你访问服务使用的User的用户的操作,如果你没有把这个用户添加到docker的用户组中,那自然vscode是没有权限访问的。2,服务器端有一个contianer,但是无法通过vscode的Dev contianer组件将服务器中正在运行的contianer添加过来。3,值得注意的一点是,我没有把当前用户添加到docker用户组中,这也是报错的原因。然后一定要exit你的当前用户,不行就重启一下服务器。
2024-01-11 11:46:01
625
原创 AGX更新Jetpack后无法SSH报错:写入管道指定不存在
你的电脑里的C:\Users\{你的用户名}/.ssh/known_hosts文件,然后用记事本打开,找到你的设备的IP地址和其后面连着的那一串密钥,将他们删掉就好了。我的设备更新了新的Jetpack,换了新的系统镜像,所以密钥也换了,但是ssh到设备的电脑里的密钥还保存的是以前的,它们对不上就会报错。
2024-01-09 21:17:05
510
原创 Jetson Orin AGX 64GB更新 Jetpack6.0
install组件的方式可以选择USB连接,也可以选择ethernet连接,如果是前者记住用用microUSB接口将AGX连接到电脑上,如果后者,你要先在AGX上用ifconfig查看并记住地址。这里官方要求使用AGX后面的哪个microUSB连接你的电脑,连接成功后SDKManager是会有个弹窗提示你的,但是就算有弹窗了,TargetHardware那里还有可能是识别不到的,识别不到设备也没关系,点击continue,继续下一步。里的阿里云的链接删掉了,换成原生的,就不报错了。
2024-01-09 20:20:34
2356
2
原创 TensorRT及CUDA自学笔记001 基础知识点和学习资源
TensorRT 是一套可用于高效实现DL模型推理的SDK,它内含infer优化器和运行环境,能让DL模型在更低的资源占用的条件下,以更快的的运行。在TensorRT中,我们可以用API手动地一个Layer一个Layer地搭建Network,也可以直接使用来自ONNX的模型,如果使用后者,就不需要一层一层地搭建模型。
2024-01-07 21:13:00
1670
原创 Jetson Orin AGX上开发报错: undefined reference to symbol ‘pthread_rwlock_wrlock@@GLIBC_2.17‘
Jetson Orin AGX上的CUDA开发报错:/usr/bin/ld: /usr/local/lib/libgflags.a(gflags.cc.o): undefined reference to symbol ‘pthread_rwlock_wrlock@@GLIBC_2.17’
2024-01-06 16:21:29
420
原创 C++自学笔记006左值引用和右值引用
2,因为右值引用变量是左值,所以右值引用变量可以取地址可以赋值。2,const左值引用既可以引用左值,也可以引用右值。3,const右值引用变量可以取地址但不可以赋值。无论左值引用还是右值引用,都是给对象取别名。左值引用就是对左值的引用,给左值取别名。右值引用就是对右值的引用,给右值取别名。4,右值引用可以引用被move的值。1, 左值引用只能引用左值。1,右值引用变量是左值。
2023-12-28 20:14:22
393
原创 C++自学笔记005:移动语义
RVO(Return Value Optimization)是一种编译器优化机制:当函数需要返回一个对象的时候,如果自己创建一个临时对象返回,那么这个临时对象会消耗一个构造函数(Constructor)、一个拷贝构造函数(Copy Constructor)以及一个析构函数(Destructor)的调用的代价,RVO的目的就是消除为保存返回值而创建的临时对象,这样就可以将成本降低到一个构造函数的代价。的功能也是类似的,它出现的目的就是减少在因。学习移动语义之前要先了解一下RVO机制。
2023-12-28 18:52:10
444
原创 C++多线程学习笔记004简单的Producer和Consumer模型
Producer为队列中添加“任务”,Consumer自队列中取出并完成“任务”。
2023-12-24 21:14:44
595
原创 C++多线程学习笔记003lock_guard和unique_lock
lock_guard在其构造函数中会对其传入的mutex实参进行自动加锁,在其析构函数中会对其传入的mutex实参进行自动unlock,所以可以用lock_guard搭配作用域,完成自动的加锁解锁。使用mutex.lock()和mutex.unlock()可以用来完成基本的互斥锁操作,想用高级一点的lock操作可以用lock_guard和unique_lock。相比于lock_guard,unique_lock能实现更复杂的操作,比如阻塞的延时加锁,定时加锁等。
2023-12-24 21:09:48
383
原创 C++多线程学习笔记002多线程互斥锁基本操作和死锁
C++中要注意线程安全,多个线程不能同时读写一个变量,这时就需要互斥锁来保证某个变量同一时间只能被某个一个线程访问。2, 注意互斥锁的逻辑,如果逻辑有问题,会出现”1, 使用std::mutex创建互斥锁。
2023-12-24 20:50:22
436
原创 C++多线程学习笔记001多线程基本操作
1, 使用std::thread初始化线程时,第一个参数为线程运行的函数的函数名,后续为为这个线程函数传递的参数。2, join 函数的功能是阻塞地让程序等待线程的运行,如果线程函数一直运行,一直不返回,程序就在这里一直等待。有时候我们可能不需要等待线程完成,而是希望它在后台运行。
2023-12-19 22:10:23
421
原创 Linux环境自学多线程报错
由于pthread库不是Linux系统默认的库,连接时需要使用库libpthread.a,所以在使用pthread_create创建线程时,在编译中要加-lpthread参数。
2023-12-19 20:47:04
365
原创 Jetson Orin AGX 上ONNX转换为engine时警告:[W] [TRT] Unknown embedded device detected. Using 59655Mi...
Jetson Orin AGX 上ONNX转换为engine时警告:[W] [TRT] Unknown embedded device detected. Using 59655Mi as the allocation cap for memory on embedded devices.
2023-11-27 22:30:59
876
10
原创 Jetson Orin AGX上的CUDA开发报错:No CMAKE_CUDA_COMPILER could be found.
Jetson Orin AGX上的CUDA开发报错:CMake Error at CMakeLists.txt:3 (project):No CMAKE_CUDA_COMPILER could be found.
2023-11-27 21:38:05
793
原创 Jetson Orin AGX上的TensotRT开发报错:fatal error: cuda_runtime_api.h: No such file or directory
Jetson Orin NX上的TensotRT开发报错:fatal error: cuda_runtime_api.h: No such file or directory。
2023-11-27 20:46:04
531
原创 Jetson Orin NX上的TensotRT开发报错:fatal error: cuda_runtime.h: No such file or directory
Jetson Orin NX上的TensotRT开发报错:fatal error: cuda_runtime.h: No such file or directory。
2023-10-31 10:08:29
332
原创 Jetson Orin NX上运行./rtsp-simple-server代码报错
检查文件架构:使用file rtsp-simple-server命令查看二进制文件的详细信息,这将告诉你该文件是为哪种架构编译的。检查你的硬件架构:使用uname -m命令查看你的操作系统和硬件架构。确保下载或编译的二进制文件与你的硬件和操作系统版本匹配。重新下载或重新编译:如果你认为文件可能已损坏或不是为你的硬件架构编译的,尝试从官方源重新下载正确的版本或从源代码重新编译。文件不是为你的硬件架构编译的:例如,你可能在一个x86_64架构的机器上运行一个为ARM架构编译的二进制文件。
2023-10-30 13:37:51
164
基于EBAZ4205矿板的图像处理:09基于sobel边缘检测的图像锐化项目全部文件.zip
2024-06-10
基于EBAZ4205矿板的图像处理:03使用VIO调试输出HDMI视频图像项目全部文件
2024-05-24
基于EBAZ4205矿板的图像处理:04中值滤波算法项目全部文件
2024-05-15
基于EBAZ4205矿板的图像处理:05均值滤波算法项目全部文件
2024-05-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人