ar头显和眼镜图像特效处理

使用一个线程从摄像头或者其他设备循环读取图像数据写入链表,另一个线程从链表循环读取数据并做相应的特效处理,由于写入的速度比读取的快,最终必然会因为写入过快导致线程读写一帧而引发冲突和数据帧正常数据帧被覆盖。最好使用共享内存,以节省拷贝的时间。

1.一个懒惰的处理方式是,使用线程锁当读写冲突时,让读取线程向前快速移动若干帧,移动帧数和写入的速度有一定关系,这能处理正确冲突,但会丢帧,而且跳帧过于频繁体验会变差。

2.如果写线程遇到读线程冲突,也可以阻塞,等若干时间一样也会导致掉帧。

3.一个好的方法是一方面降低写入,比如写入时加一个过滤器,如果图像变化比较小,可以不跳过,一方面提高读取处理速度,使两者速度接近,以减少冲突,这样在遇到冲突需要跳帧时能减少丢帧。如果能使用信号量每隔一段时间读写对齐一次就很好。

4.一个不丢帧的方式,从摄像头获取的数据分一大一小两个buffer,大的用于直接显示,不处理不减帧,小的用于特效处理,处理一帧,发送一帧,生成标定数据狗,猫,人然后把这些标注按大小比例合并到原始图上。

相关推荐
树码小子15 分钟前
Java网络编程:(socket API编程:UDP协议的 socket API -- 回显程序的服务器端程序的编写)
java·网络·udp
云深麋鹿31 分钟前
数据链路层总结
java·网络
威斯软科的老司机1 小时前
WebSocket压缩传输优化:机器视觉高清流在DCS中的低延迟方案
网络·websocket·网络协议
小狮子安度因2 小时前
AAC ADTS格式分析
网络·ffmpeg·aac
啟明起鸣3 小时前
【网络编程】从与 TCP 服务器的对比中探讨出 UDP 协议服务器的并发方案(C 语言)
服务器·c语言·开发语言·网络·tcp/ip·udp
九章云极AladdinEdu3 小时前
深度学习优化器进化史:从SGD到AdamW的原理与选择
linux·服务器·开发语言·网络·人工智能·深度学习·gpu算力
哈哈很哈哈3 小时前
构建高性能网络应用
网络
emojiwoo3 小时前
HTTP 状态码背后的逻辑:从请求到响应的完整流程解析(含完整流程图)
网络·网络协议·http
番薯大佬4 小时前
Python学习-day9 字典Dictionary
网络·python·学习
渡我白衣4 小时前
Linux网络:应用层协议http
linux·网络·http