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

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

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

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

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

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

相关推荐
一颗星星辰1 小时前
路由交换网络专题 | 第八章 | GVRP配置 | 端口安全 | 端口隔离 | Mux-VLAN | Hybrid
网络·安全
自由鬼1 小时前
高性能的开源网络入侵检测和防御引擎:Suricata介绍
网络·安全·网络安全·开源·系统安全·入侵检测
老六ip加速器1 小时前
如何获取静态IP地址?完整教程
网络·网络协议·tcp/ip
java1234_小锋2 小时前
什么是WebSocket?NGINX如何支持WebSocket协议?
websocket·网络协议·nginx
S&Z34634 小时前
[官方IP] Shift RAM
网络协议·tcp/ip·fpga开发
小吃饱了4 小时前
LSA六种类型
网络·智能路由器
游王子4 小时前
springboot3 声明式 HTTP 接口
网络·spring boot·网络协议·http
神经毒素5 小时前
WEB安全--RCE--webshell bypass
网络·安全·web安全
猿周LV5 小时前
网络原理 - 应用层, 传输层(UDP 和 TCP) 进阶, 网络层, 数据链路层 [Java EE]
服务器·网络·网络协议·tcp/ip·udp·java-ee
Zz_waiting.5 小时前
网络原理 - 9
linux·服务器·网络·网络协议·tcp/ip