网络监控v2.0

网络监控v2.0

基于imx6ull的网络视频监控,使用QT5框架编程,包括服务端、客户端和ap3216c驱动三部分。服务端的功能包括udp文本收发、摄像头捕获、本地显示、udp广播和退出程序;客户端功能包括udp文本收发、udp接收视频图像、视频播放;ap3216c驱动为i2c设备,此模块还使用iio子系统和regmap子系统。
请添加图片描述

1 server服务端

请添加图片描述

1.1 udp文本收发

  • 在widget(窗口)类构造函数中实例化一个udpsocket对象,暂不进行端口绑定;

  • 当绑定端口按键被按下时,对刚刚实例化的udpsocket进行bind,绑定为7766;

  • 同理当解除绑定按键被按下时,对udpsocket进行close(解除绑定);

  • 在widget构造函数、绑定端口按键槽函数、解除绑定按键槽函数中对绑定和解绑按键进行互斥;

  • 在widget构造函数中连接udpsocket的readyRead信号和widget的readPendingDatagrams槽函数,然后在readPendingDatagrams槽函数中使用readDatagram函数读取udpsocket接收到的数据报,并将结果在textBrowser中显示;

  • 在widget构造函数中连接udpsocket的状态更改信号stateChanged和widget的mStateChaged槽函数,然后在mStateChaged槽函数中将当前socket状态显示在textBrowser中,便于调试。

1.2 摄像头捕获

  • 在widget构造函数中实例化一个captureThread对象,在该对象中进行捕获操作;

  • 连接开始采集按键的clicked信号和captureThread对象的setThreadStart槽函数,在setThreadStart槽函数中根据按键是否按下决定线程是否运行;

  • 连接本地播放复选框的clicked信号和captureThread对象的setLocalDisplay槽函数,在setLocalDisplay槽函数中改变本地播放标志;

  • 连接开启广播复选框的clicked信号和captureThread对象的setBroadcast槽函数,在setBroadcast槽函数中改变开启广播标志;

  • 连接captureThread的imageReady信号和widget的showImage槽函数,在showImage槽函数中将captureThread准备好的image图像显示到视频播放框中,视频播放框的本质是一个label,使用label下的setPixmap函数;

  • 在captureThread线程运行函数中使用v4l2设备驱动框架对摄像头设备进行操作,流程如下:
    请添加图片描述

  • 在captureThread线程运行函数中根据startFlag判断是否进入yuyv_to_rgb格式转换、本地播放和开启广播的循环;

    • 循环遍历缓冲区
    • 取出缓冲区
    • 图像处理
    • 本地显示(根据是否本地显示决定是否发送imageReady信号)
    • 广播图像数据
    • 重新排队缓冲区
  • 图像处理

    因为是usb摄像头,不是rgb格式的,还需要一个yuyv_to_rgb的格式转换,根据公式用cpu运算转化(未使用硬件转码)。

1.3 传感器数据读取

  • 在widget构造函数中实例化一个ap3216cTHread对
  • 27
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值