这种方法和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 三个应用返回,无显式返回值
转成灰度图以后,计算颜色的直方图,计算分布在 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
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?