- 博客(528)
- 资源 (41)
- 收藏
- 关注
原创 测试gpu性能,单精度,半精度,混合精度
1 硬件信息检测:检查CUDA可用性显示GPU型号和核心配置检测Tensor Core支持情况(Volta架构及以上)2 性能测试:创建2048x2048大小的FP16矩阵测量矩阵乘法耗时计算理论峰值和实际GFLOPS。
2025-03-21 07:10:30
335
原创 pytorch 张量创建基础
在默认情况下,torch.tensor 会在 CPU 上创建张量。在上述代码中,通过 torch.tensor 创建了一个张量 tensor_cpu,并使用 tensor_cpu.device 查看该张量所在的设备,输出结果通常为 cpu,这表明张量是在 CPU 上创建的。将张量移动到 GPU。
2025-01-23 06:52:51
396
原创 git 删除大文件的方法
首先要提交所有的更改git filter-branch -f --prune-empty --index-filter “git rm -rf --cached --ignore-unmatch 文件相对路径复制到这里” --tag-name-filter cat – --all。
2024-12-05 15:44:22
317
原创 std::thread线程通知、等待、让渡
看到很多c++ 程序员使用线程循环的时候使用sleep 去取队列中的数据,这个做法没有大问题,但很多时候会浪费cpu,很多更会把效率降低,因为我们实在不知道要等待多长时间,不能随便写个值,常规的做法还是要使用线程通知。如下代码所示。
2024-11-11 21:24:49
363
原创 OpenRTP 传输增加OpenRTPServer
最近增加了OpenRTPServer, 已经修改完成一版放在了目录下,window和linux下编译都成功了,不过由于修改代码CMakefile 需要修改,先放放。
2024-10-27 17:01:53
1033
原创 socket 封装,wl ipv4 ipv6
windows,linux, ipv4 ipv6 广播 只需要一个头文件,应急的使用可以使用,代码如下。
2024-10-23 06:18:34
223
原创 OpenRTP 增加桌面RTP发送测试
这次加上了帧率保证算法代码,好处是后面即使用固定增加的时间戳音视频也能同步,具体看以下的线程保证,主要原理是计算fix_consume 和 时间耗费的 total,两者的diff 差就是我们需要暂停的时间,以下也示例了所有编码类如何使用。这样图像倒置就比较简单解决,不过也可以纯手工算法倒置,没多大区别,TYUVRGBScale.h 里面有转化,合并,下采样的代码,放大缩小也不在话下,为什么要自己写呢,因为代码最后都会走到硬件芯片上,手动写后面可以采用比如直接的cuda 核函数来变化,所以也写了一份。
2024-10-20 19:50:33
517
原创 OpenRTP 乱序排包和差分抖动计算
因为大部分摄像头不一定能够达到采样的帧率,而音频大部分时间都是用回调来进行,是比较正确的,时间戳递增可以准确无误,但视频一旦帧率没有够上,结果递增时间却是确定的,就会造成两者时间戳不同步,一般像摄像头这种设备,无法够上足够的帧率,所以做法有两种。由于时间戳是32位,而rtp协议的sequnce num 是16位无符号证书,所以无法按照正常直接的比较来进行排序,需要回环计算,为了插入和删除方便,定义双缓冲,一个缓冲为queue队列,输出给应用,一个缓冲为链表, 方便排序。对于每个接收到的数据包,计算其延迟。
2024-10-19 19:40:23
1183
原创 openrtp 音视频时间戳问题
openrtp增加了音频aac的发送,地址同时使用两个rtp ,来发送音频和视频使用以下音频rtp,是可以发送和接收的音视频合成发送rtpvlc 使用分开的端口来接收,经过测试无误我把sdp文件放在了这里,
2024-10-17 21:23:26
1067
原创 openrtp ps流和纯rtp流
OpenRtp 以RTP协议为主,发送音视频,因为工作量比较大,所以耽误了一些时间,前面一直没有时间来修改这个程序,也有一些人提了意见,现在重视一下,把这个程序做好,让学习rtp协议的人能够受益,以前代码比较杂乱,稍稍整理了一下,修改成为三个程序,1 个是CorePhone,包括协议和编解码,另外两个是RtpDecode 和 RtpEncode,把乱七八糟的非界面程序整理到CorePhone中了,界面里的程序较少.整体分为三个部分。
2024-10-13 14:42:32
935
原创 simple c++ 无锁队列
使用compare_exchange_strong 和 compare_exchange_weak在 C++ 中,compare_exchange_strong 和 compare_exchange_weak 是 std::atomic 类型的成员函数,用于原子地比较和交换操作。以下实现适合单生产者,单消费者,否则效率不佳。
2024-10-06 08:09:13
660
原创 融媒体服务中PBO进行多重采样抗锯齿(MSAA)
如果不理解pbo 那先去了解概念,在此不再解释,这是我为了做融合服务器viewpointserver做的一部分工作,融合服务器的功能是将三维和流媒体,AI融合在一起,viewpointserver会直接读取三维工程的文件,同时融合rtsp视频流,将视频流作为纹理给材质,最后赋值给三维模型如fbx的表面。由于没有窗口,三维作为服务运行,里面有一项工作就是三维的抗锯齿采集。PBO(Pixel Buffer Object)进行多重采样抗锯齿(MSAA)的一般步骤。
2024-10-04 19:18:59
1324
原创 rtmp协议转websocketflv的去队列积压
websocket server的好处:WebSocket 服务器能够实现实时的数据推送,服务器可以主动向客户端发送数据1 不需要客户端不断轮询。2 不需要实现httpserver跨域。在需要修改协议的时候比较灵活,我们发送数据的时候比较方便,因为两边可以随时发送协议, 且做客户端的程序更为方便,websocket协议头部已经定义了包长,使用大部分库可以直接收数据,解决了粘包的问题,所以websocket协议是一个使用比较顺畅的协议。
2024-10-02 16:10:38
1300
原创 超分服务的分量保存
分量的概念主要是对于一个显卡和网络传输而言,显卡可以同时进行几个线程,多个显卡可以分布式进行量的同时进行AI识别,比如我们有cuda的显卡,cuda的核心量可以分给不同的分片视频,第一步先将视频减小,第二部分割视频。对于小视频片而言,不同的智能盒子也可以接收网络传输来进行接收数据,进行并行识别服务。这就是我说的分量服务的概念。
2024-10-01 19:01:40
998
原创 AI推导图像
这可能需要人工或者使用一些自动化的 3D 重建算法,如果物体具有一定的规则形状,可以通过几何形状的假设来构建初步的 3D 模型。无论哪种方法,都存在一定的局限性和挑战,并且结果的准确性取决于多种因素,如原始图像的质量、物体的复杂性、可用的数据量等。例如,使用一些基于图像生成的 GAN 架构,如 StyleGAN 等,并对其进行调整和训练以适应特定的任务。在确定了旋转后的图像像素位置后,由于像素位置通常不是整数,需要使用插值方法来确定新位置的像素值。最后,从新的角度对 3D 模型进行渲染,得到旋转后的图像。
2024-09-06 11:51:20
284
1
原创 opencv的球面投影
在全景图像拼接任务中,可能需要对多个图像进行球面投影以实现无缝拼接。每个cv::detail::SphericalProjector可以负责一个图像的球面投影操作。通过将多个这样的投影器存储在std::vector中,可以对一组图像依次进行投影处理,为后续的图像融合和拼接做准备。例如,当拼接一组由不同角度拍摄的照片以创建全景图时,这个容器可以存储针对每个照片的投影器,确保每个图像都能正确地投影到球面坐标系统中,从而使得拼接过程更加准确和自然。
2024-09-04 20:18:04
1989
原创 opencl nv12转bgr 优化算法
最好的优化就是不进行转化而直接使用nv12 进行各种算法运算不过有优于没有!先使用转化,可以使用cuda 和 opencl 的kernel 进行转化,分别给出普通的算法和opencl 的kernel。
2024-08-30 10:00:05
288
原创 yuv420转 nv12
这个算法特别简单,就是把两个平面得数据合并为1个平面过程就是先拷贝y品面,再把uv平面从两个平面转到1个平面上,让uv交错分布,而nv12 是交错分布得。看到了很多写得代码写得巨复杂,就知道很多人没有理解两个平面得概念。
2024-08-29 13:45:51
419
原创 computer version 图像的背景建模
在多帧图像的背景建模中,可以将连续的视频帧累加起来,以获得一个相对稳定的背景图像。随着时间的推移,动态的前景物体在累加过程中会逐渐被平均掉,而静态的背景部分则会更加突出。在一些需要实时更新统计信息的应用中,accumulate可以高效地进行累计计算,而不需要每次重新计算整个数据集的统计量。比如在计算图像的直方图特征时,可以将不同区域或不同条件下的直方图进行累加,以获得更全面的特征描述。例如,计算图像中像素值的累计和、累计平方和等,这些统计量可以用于计算图像的均值、方差等参数。
2024-08-24 10:59:59
213
原创 computer version 如何做背景建模中处理噪声和光照变化
准确识别前景目标,通过建立背景模型,可以将视频中的每一帧图像与背景进行比较,从而快速准确地识别出前景目标。例如,在监控视频中,可以检测出移动的人、车辆等物体。这种方法能够有效地过滤掉静止的背景部分,只关注动态变化的前景区域,提高目标检测的效率和准确性。减少误检和漏检,与传统的基于阈值或边缘检测的方法相比,背景建模能够更好地适应不同的场景和光照条件,减少因噪声、阴影等因素导致的误检和漏检。对于复杂场景下的目标检测,如人群密集的场所、光照变化剧烈的户外环境等,背景建模能够提供更可靠的结果。
2024-08-24 10:19:54
938
原创 opengl创建柱面和鱼眼重展uv
先看一下专业软件可以拉取很多的uv点以下是使用 OpenGL 创建不规则面片并指定 UV 的一般步骤:1 顶点数据准备2 定义面片的顶点坐标。这些顶点构成了面片的形状。3 为每个顶点指定对应的纹理坐标(UV)。4 创建顶点缓冲区对象(VBO)5 将顶点数据和 UV 数据存储在 VBO 中。6 顶点数组对象(VAO)设置7 绑定 VAO 并配置顶点属性指针,指定顶点位置和 UV 的布局。8 绘制面片。
2024-08-09 09:56:31
406
原创 qt 如何制作动态库插件
首先第一点要确定我们的接口是固定的,也就是要确定使用extern “C” 来保持接口能被正确的找到函数名rtspplugin_global.h 文件定义宏defined文件实现如下,需要定义一个结构体,将需要保存的数据结构都放在里面qt的pro文件如下+=ifdeprecatedifdo+=0x0600006.0.0for编译完成,正确生成 动态库。
2024-07-24 16:28:37
539
原创 ue 材质贴图Tiling repeat
拖出一个TexCoord,代表坐标,拖出一个参数,代表次数,如下操作:为了实现Tiling,你需要修改Texture Coordinate节点的UV值。这可以通过简单的数学运算来完成,例如乘以一个数值。例如,如果你想要纹理平铺两次,你可以创建一个Scalar Parameter(标量参数)节点,设置其值为2,然后将其输出乘以Texture Coordinate节点的输出。这会将UV坐标翻倍,从而导致纹理在U和V方向上平铺两次。贴图显然不符合逻辑,太大,并且是一次性贴图。换一个红砖纹理,就看清了,砖太大了。
2024-06-26 21:26:33
830
socket 网络的封装,包含linux,windows, ipv4 ipv6 广播,多播等 ,一个头文件,一个cpp
2024-10-23
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关注的人