- 博客(485)
- 资源 (41)
- 收藏
- 关注
原创 opencl 基础:如何编译核函数
CUDA和OpenCL类似,都是异构并行计算系统。系统中有一台主机和一个或多个计算设备。关于计算设备,CUDA中叫做多喝流处理器(SM),而OpenCL中叫做计算单元(CU)。另外,在OpenCL中一个CU在CPU中相当于CPU的一个内核。get_global_id是OpenCL编程语言中的一个内置函数,用于在OpenCL内核(kernel)中获取当前工作项在全球工作空间中的唯一标识符(ID)。这个标识符通常是多维的,对应于内核执行时定义的全局工作项的索引。
2024-05-23 07:06:17 247
原创 opencl色域变换,处理传递显存数据
在使用ffmpeg解码后的多路解码数据非常慢,还要给AI做分析,可行的加速方式是在显存处理数据,在中,提高了比较可靠的方式是使用cuda,那么没有cuda的显卡如何处理呢,比较好的方式是使用opencl来提高数据传输方式。
2024-05-22 06:01:00 332
原创 windows编译opencv4.9
opencv很多人在windows上编译感觉特别麻烦,没有linux下方便,设定以下三点,我们几乎会无障碍。
2024-05-12 09:33:24 347 2
原创 视频拼接融合产品的产品与架构设计(二)
总之效率是最重要的,还有一点一直是我所思考的,如果死磕gpu,那么cpu 会浪费,所以对gpu 和 cpu 除了要分布式处理,还要进行分担,所以我决定从多点出发,需要进行cpu 前处理插件点,gpu处理插件点,gpu下拉后插件点 ,利用cpu 多核处理能力,同时分担gpu的任务。未完,待续。。。。。。。
2024-05-10 14:10:33 912 2
原创 ffmpeg 转文件为h265
nvidia-smi±----------------------------------------------------------------------------------------+| NVIDIA-SMI 551.61 Driver Version: 551.61 CUDA Version: 12.4 ||-----------------------------------------±-------------------
2024-05-04 08:12:28 650
原创 视频输入c++ 调用 libtorch推理
libtorch 支持GPU情况比较奇怪,目前2.3 版本需要在链接器里面加上以下命令,否则不会支持gpu-INCLUDE:?
2024-04-27 04:54:00 538 1
原创 使用零拷贝技术加速视频图像操作
总结起来,使用cv::cuda::HostMem的主要优点在于:减少数据拷贝:利用CUDA的零拷贝技术,可以避免不必要的内存复制,提高数据交互效率。优化内存访问:通过设置合适的内存属性(如OST_MEM_WRITE_COMBINING),可以提高内存访问性能。请注意,实际效果取决于硬件环境、CUDA驱动支持以及具体的应用场景。对于现代GPU架构,特别是在支持统一内存访问(UMA)或非一致性内存访问(NUMA)的系统上,使用HostMem可以获得更好的性能优势。
2024-04-26 06:55:26 373
原创 硬件解码后显存数据直接推理
网络摄像头解码的时候传输到内存中后数据比原始的rgb 图像要小很多,这时候直接传输到显卡以后解码,速度很快,而mipi摄像头如果不使用dma技术,结果会直接用rgb传输到显存中,可想而知,数据量大,一下子慢了下来,就是这个原因。
2024-04-25 19:31:52 229
原创 使用avx2 指令集加速向量算法运算
我们使用向量加,为什么函数是0 到 8 的计算,因为avx2 寄存器为256位,同时设置启动增强指令集猜猜以上代码会怎么样,如果是在debug下,明显avx2 指令集会快,在release下,普通代码立刻甩开了avx2指令,所以一定要判断数据量,下面重写代码来测试。
2024-04-13 08:43:07 445
原创 使用vulkan 和 glsl来渲染 yuv nv12
1.1 编写一个顶点着色器(Vertex Shader),用于处理顶点数据(通常用于几何变换)。1.2 编写一个片段着色器(Fragment Shader),用于处理像素级别的颜色转换。使用着色器编译器(如glslc)将GLSL源代码编译为SPIR-V二进制格式。Vulkan运行时能够直接加载和执行SPIR-V代码。在Vulkan中创建着色器模块,将SPIR-V代码加载到这些模块中。创建描述符集和描述符集布局,用于向着色器提供输入数据(如YUV纹理)和输出数据(如转换后的RGB图像)。
2024-04-11 22:01:52 396
原创 ffmpeg cuda硬件解码后处理使用opengl渲染,全硬件流程
整个流程是一旦数据到了cuda内核,就不要轻易下载到内存,直接在cuda里面进行操作,一直到渲染完毕,后面在给出完整的代码示例。
2024-04-08 21:12:08 582
原创 解码视频流在opengl中的贴图投影计算
我们把视频当成纹理,首先要确定贴入的坐标,原始坐标如下所示实际上我们要确定的是opengl的投影视窗,视窗大小就是位置,相当于把解码图像放到窗口中的什么位置,这里并不是纹理位置,纹理位置是具体取到那一块的纹理,涉及到放大缩小,我们写一个顶点着色器,如下所示330没有任何约束,放出来的贴图会随着窗口的变化而变化,问题是不成比例,视频展现失比例拉伸,对展现并不友好。我们要使用向量的运算来修改投影视窗。
2024-03-28 21:58:54 557 2
原创 基于cuda和opengl高性能处理渲染多阵列摄像头8K画面(一)
科学!=技术,非常有同感,接触过很多博士,硕士,博士的科学理论化和想象力更多一些,用于指导技术,而一些硕士和本科的技术的实践性更强一些,用于反向传播科学的参数,从而显现偏差,再来纠偏,这就和业务部门必须指导技术部门一样的道理,业务部门可以想象自己的处理方式,最后技术部门必须落地。我有一个比较映像深刻的地方就是闫令其老师在讲课图形学的时候,底下一个学生问体积着色的问题,一下把老师整蒙了,把底下听课的我也整笑了,就像你再问总统说我家里的拖把如何拖地的问题一样,事实上,这种细节问题显然不是图像学的基础,而是在工业
2024-03-28 09:37:12 729
原创 如何解决新版的anaconda notebook 打不开浏览器
先安装nodejs,删除其他源头,留下默认,重新安装notebook,修改配置,最后选择浏览器
2024-03-10 11:14:31 405
原创 RTP工具改进(五)--使用qt
第四篇前面使用的工具一直为mfc,今天将使用qt 来做界面,使用qt 来进行程序和协议的编写,qt部分目前还不包括rtp ps流和rtmp,暂时只有rtp 直接传输,关于rtmp协议和ps流协议,先使用vs的mfc。增加和改变的模块为rtp,和 rtp_recv,如下图,以前的vs MFC版本都放到vs下面,有关于qt的 gb28181 的sip server 和 rtp 发送接收等都放到qt下面,所有可执行都放到外层的bin下面代码地址。
2024-01-27 14:47:18 759
原创 RTP工具改进(四) - rtmp协议推送
前面写了rtsp ps 流推送,为了把软件提高使用的实用性,准备将rtp协议扩展到rtmp 和 rtsp。rtsp 扩展是必然的,因为rtsp的核心协议是rtp,rtmp协议实际上在封包的原理上借鉴了rtp。代码地址RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变。
2024-01-25 13:02:38 1009
原创 RTP 接发ps流工具改进(三)
代码地址注:两种方式发送,一种直接rtp方式,一种ps over rtp方式代码里面有直接rtp方式发送,可以修改代码成为直接的rtp方式也是可以的。
2024-01-21 12:41:39 511
原创 论rtp协议的重要性
对于tcp来说,是流式协议,不作他讲。无论是tcp还是udp都是可行的做法,rtp over tcp 和 rtp over udp 都可以放入rtsp 或者 sip 协议中,其中另外一个指明交换的文本协议叫做sdp协议,中文名为会话描述协议,可以直接rtp传输吗,可以,但是关键帧之前一定要有sps,pps,h265 之前再加个vps,因为一般来说,sps,pps这种信息会放到sdp中,没有了sdp的加持,那么我们的接收程序必须要约定一些内容。
2024-01-20 00:15:57 469
原创 jetson deepstream 解码接入编码输出
在jetson主板上安装gstreamer工具链,编译opencv上面的opencv 肯定是少编译了很多东西,尤其是cuda的编译,需要大家自己去写参数编译,jetson上编译挺费时间的,耐心做就行了。
2024-01-06 15:05:37 1038
原创 rtsp超分推流流程(一)
播放一个RTSP的流需要如下的RTSP请求命令:OPTIONS -> DESCRIBE -> SETUP -> PLAY 然后就是接收RTP包、播放了最开始也不太清楚推流到底应该怎么来推,后来使用ffmpeg的推流命令,然后抓包分析出来,推流的RTSP请求命令如下:OPTIONS -> ANNOUNCE -> SETUP -> RECORDEASYPUSHER安卓ANDROID手机直播推送之MEDIACODEC 硬编码H264格式https://www.fr
2024-01-04 13:58:39 1180
原创 yolov8 tracking编码为web 和 rtsp流输出
使用python pytorch yolov8 track进行reid 识别后将识别后的图片通过websocket 协议和内存共享发送到web端和 rtsp server端,可通过web显示或者通过rtsp 客户端拉流
2023-12-31 19:45:37 1650
原创 使用tesla gpu 加速大模型,ffmpeg,unity 和 UE等二三维应用
我们知道tesla gpu 没有显示器接口,那么在windows中怎么使用加速unity ue这种三维编辑器呢,答案就是改变注册表来加速相应的三维渲染程序.
2023-12-25 21:32:12 2387
原创 ffmpeg 解码文件时的时间戳问题
实时流编码时,我们一般不进行b帧编码,但是文件存储时为了减小大小,会增加b帧,实时流只带了I,P帧,那就会好很多很多文件带了b帧,所以要使用解码时间去同步,如果使用pts,很多人一定会被其时间搞混。
2023-12-25 16:51:15 716
原创 ffmpeg 硬件解码零拷贝unity 播放
ffmpeg 在硬件解码,一般来说,我们解码使用cuda方式,当然,最好的方式是不要确定一定是cuda,客户的显卡不一定有cuda,windows 下,和linux 下要做一些适配工作,最麻烦的不是这个,二是ffmpeg解码后,颜色空间的转换,如果使用cuda,那么可以使用cuda去在gpu中直接转码,如果没有cuda,那么我们希望的是不要转颜色空间。ffmpeg 硬件解码相信下面这一段代码是大家比较熟悉的如下我们在解码的时候,gpu 一个tesla p40 都占用了42%,实际上是unity渲染占用。
2023-12-22 16:10:41 1221
原创 rtsp视频在使用unity三维融合播放后的修正
我们使用unity UE 等三维渲染引擎中使用c++编写插件来接入rtsp 视频。同时做融合的时候,和背景的三维颜色要一致,这就要使用视频融合修正技术。包括亮度,对比度,饱和度的修正。在单纯颜色上的修正可以简单使用rgb->hsv去修改,这里不做累赘说明了。
2023-12-21 17:41:42 840 1
原创 arm linux 平台 打开摄像头矫正
v4l 意思为 video for Linux, 是linux驱动链接摄像头的软件应用部分,当然先要安装好v4l-utils看完以后基础信息以后就可以使用jetson等主板工具打开查看使用gstreamer 工具。
2023-12-04 07:38:28 536
原创 unity 控制玩家物体
放上一个plane,放上一个球 sphere,假定我们的球就是我们的玩家,使用控制键w a s d 来控制球也就是玩家移动。增加一个材质,把颜色改成绿色,把材质赋给plane,区分我们增加的白球。
2023-10-06 22:22:13 311
websocket c语言实现
2022-10-07
qt websocket 客户端 多线程使用
2022-09-16
udp tunnel 转udp 到 tcp
2022-07-19
qt c++ dialog 异形窗口+半透明窗体制作
2022-05-24
qt下写的内存池和线程调用
2022-04-26
vue+nodejs 将canvas发布到dlna投屏服务
2022-03-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人