您当前的位置: 首页 >  websocket

qianbo_insist

暂无认证

  • 0浏览

    0关注

    399博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

rtsp 协议读取视频进行分析并返回结果到websocket server

qianbo_insist 发布时间:2021-03-18 21:47:08 ,浏览量:0

一、rtsp 协议读取视频 1.1读取方法ffmpeg

这种方法和opencv是一样的,因为opencv使用的就是ffmpeg,结果不是很好,断线重连不是很好做,有一个好处是不用引入其他库,ffmpeg也用来解码之用。

1.2 live555

速度快,断线重连比较方便,摄像头像海康大华等等时间长了会自动重启内部服务,这时候涉及断线重连。这里使用这种方式。

1.3 自己写接收代码

理解rtsp协议之后使用udp服务接收帧,这种好处是完全控制协议和数据,最大的灵活性,但是也带来代码调试量增多的问题。

二、基础算法分析

注意:实现 rtsp 端口使用 sdp 协议获取图像信息,使用 rtp 协议接收图像,解码后得到 yuv,使用 y 分量得到灰白图像,在需要 rgb 的时候使用 yuv 转化成 rgb。如果算法需要的是灰度图,那就直接解码成yuv并取分量,如果一定要彩色图,那就直接使用ffmpeg解码成彩色。如果使用opencv的mat 矩阵,那就直接解码到mat的内存中,不要拷贝来拷贝去。

1 清晰度算法

梯度函数常被用来提取边缘信息,聚焦良好的图像,具有更尖锐的边缘,应有 更大的梯度函数值。采用 sobel 算子分别提取水平和垂直方向的梯度值,基于 tenengrad 梯度函数清晰度定义如下:

2 色偏度和色偏方向

输入 BGR 颜色后转化成 lab 颜色表示方式 Lab 是由一个亮度通道(channel)和两个颜色通道组成的。在 Lab 颜色空间中,每个 颜色用 L、a、b 三个数字表示,各个分量的含义是这样的:

  • L*代表亮度
  • a*代表从绿色到红色的分量
  • b*代表从蓝色到黄色的分量 *函数描述: calcCast 计算并返回一幅图像的色偏度以及,色偏方向 *函数参数: InputImg 需要计算的图片,BGR 存放格式,彩色(3 通道),灰度图无效
  • cast 计算出的偏差值,小于 1 表示比较正常,大于 1 表示存在色偏
  • da 红/绿色偏估计值,da 大于 0,表示偏红;da 小于 0 表示偏绿
  • db 黄/蓝色偏估计值,db 大于 0,表示偏黄;db 小于 0 表示偏蓝 *函数返回值: 返回值通过 cast、da、db 三个应用返回,无显式返回值
3 亮度异常

转成灰度图以后,计算颜色的直方图,计算分布在 0-255 颜色的值,设定灰度 图平均值为亮度均值如 128,求取每个像素点的与平均值差为 d1,并求取均值 da ,求取 256 种灰度值颜色与均值的差并求取平均值 Ma 求取 K = abs(da)/ abs(Ma) 为亮度系数 cast 计算出的偏差值,小于 1 表示比较正常,大于 1 表示存在亮度异常;当 cast 异常时, da 大于 0 表示过亮,da 小于 0 表示过暗

for (int i = 0; i             
关注
打赏
1663161521
查看更多评论
0.0406s