C# 海康威视网络半球摄像头回调YV12取画面
海康网络摄像头回调取画面,网口最好用千兆的网卡来做,开始用笔记本的百兆网口,不管怎么优化都是卡顿的,
后来用千兆网卡台式机的,基本就没有卡顿了,取图再加上运动检测处理,基本上十几毫秒每帧。
用回调方式处理数据流方式,参见官方的Demo,本文只介绍相关的回调YV12取图,回调中的图像数据是庞大的,
在回调中只适合做简单的处理,如果处理过于复杂,会出现卡顿的现象。因为我只需要对图像进行运动检测处理,所以只是
简单取了图像的灰度图,具体如下:
//回调函数
private void DecCallbackFUN(int nPort, IntPtr pBuf, int nSize, ref PlayCtrl.FRAME_INFO pFrameInfo, int nReserved1, int nReserved2)
{
// 将pBuf解码后视频输入写入文件中(解码后YUV数据量极大,尤其是高清码流,不建议在回调函数中处理)
if (pFrameInfo.nType == 3) //#define T_YV12 3
{
int m_Width = pFrameInfo.nWidth;
int m_Height = pFrameInfo.nHeight;
//this.MeasureTime(() => {
var img = GetBitmapFromYV12(pBuf, m_Width, m_Height, nSize);
NewFrame?.Invoke((Bitmap)img.Clone());
img.Dispose();
// });
}
}
///把YV12数据转为BGR24数据,我只关心灰度图,因此只取了Y数据,如果想获取彩色图像,考虑计算UV数据
private unsafe bool YV12ToBGR24(byte* pYUV, byte* pBGR24, int width, int height)
{
if (width < 1 || height < 1 || pYUV == null || pBGR24 == null)
return false;
byte* yData = pYUV;
int yIdx;
for (int i = 0; i < height; i++)
{
for (int j = 0; j < width; j++)
{
yIdx = i * width + j;
pBGR24[yIdx * 3] = pBGR24[yIdx * 3 + 1] = pBGR24[yIdx * 3 + 2] = yData[yIdx];
}
}
return true;
}
///获取回调的图片
private unsafe Bitmap GetBitmapFromYV12(IntPtr pBuf, int width, int height, int nSize)
{
Bitmap bitmap = new Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
BitmapData bmpData = bitmap.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.ReadWrite, bitmap.PixelFormat);
byte* desPtr = (byte*)bmpData.Scan0;
byte* srcPtr = (byte*)pBuf;
YV12ToBGR24(srcPtr, desPtr, width, height);
bitmap.UnlockBits(bmpData);
return bitmap;
}
C# 海康威视网络半球摄像头回调YV12取画面的更多相关文章
- WPF 海康威视网络摄像头回调方式实现断连提示,降低时延
原文:WPF 海康威视网络摄像头回调方式实现断连提示,降低时延 项目需要使用海康威视网络摄像头接入实时视频数据,使用海康威视官方SDK开发,发现没有断连提示的功能,故开发了一个断连提示的功能 在开发过 ...
- 网络爬虫之scrapy爬取某招聘网手机APP发布信息
1 引言 过段时间要开始找新工作了,爬取一些岗位信息来分析一下吧.目前主流的招聘网站包括前程无忧.智联.BOSS直聘.拉勾等等.有段时间时间没爬取手机APP了,这次写一个爬虫爬取前程无忧手机APP岗位 ...
- python3.4学习笔记(十七) 网络爬虫使用Beautifulsoup4抓取内容
python3.4学习笔记(十七) 网络爬虫使用Beautifulsoup4抓取内容 Beautiful Soup 是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖 ...
- Python 网络爬虫 002 (入门) 爬取一个网站之前,要了解的知识
网站站点的背景调研 1. 检查 robots.txt 网站都会定义robots.txt 文件,这个文件就是给 网络爬虫 来了解爬取该网站时存在哪些限制.当然了,这个限制仅仅只是一个建议,你可以遵守,也 ...
- scrapy爬取相似页面及回调爬取问题(以慕课网为例)
以爬取慕课网数据为例 慕课网的数据很简单,就是通过get方式获取的 连接地址为https://www.imooc.com/course/list?page=2 根据page参数来分页
- PHP网络爬虫实践:抓取百度搜索结果,并分析数据结构
百度的搜索引擎有反爬虫机制,我先直接用guzzle试试水.代码如下: <?php /** * Created by Benjiemin * Date: 2020/3/5 * Time: 14:5 ...
- 【opencv】VideoCapture打不开本地视频文件或者网络IP摄像头
1.前提:成功打开本地USB摄像头 // 创建VideoCapture对象 VideoCapture vc = new VideoCapture(); // 可以成功打开本地USB摄像头 // 参数可 ...
- OceanBase server处理网络包的回调逻辑
OceanBase处理网络包的逻辑还是蛮绕的,这里以UPS为例,作为给自己的备忘. UPS代码的main.cpp中调用ObUpdateServerMain的start启动server.start函数会 ...
- 爬虫 requests模块的其他用法 抽屉网线程池回调爬取+保存实例,gihub登陆实例
requests模块的其他用法 #通常我们在发送请求时都需要带上请求头,请求头是将自身伪装成浏览器的关键,常见的有用的请求头如下 Host Referer #大型网站通常都会根据该参数判断请求的来源 ...
- 有了 Docker,用 JavaScript 框架开发的 Web 站点也能很好地支持网络爬虫的内容抓取
点这里 阅读目录 用 AngularJS(以及其它 JavaScript 框架)开发的 Web 站点不支持爬虫的抓取 解决方案 为什么公开我们的解决方案 实现 AngularJS 服务 结论 Pr ...
随机推荐
- Pytest插件pytest-repeat重复执行
Pytest插件pytest-repeat重复执行 安装 pip install pytest-repeat doc https://pypi.org/project/pytest-repeat/ h ...
- LeetCode_1. 两数之和
写在前面 难度:简单 原文链接:https://leetcode-cn.com/problems/two-sum/ 题目 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和 ...
- springBoot集成flowable
前言 Flowable可以十分灵活地加入你的应用/服务/构架.可以将JAR形式发布的Flowable库加入应用或服务,来嵌入引擎. 以JAR形式发布使Flowable可以轻易加入任何Java环境:Ja ...
- MySQL 常用函数一览
本文选取一些mysql函数进行具体举例介绍,从功能.语法等多方面做个记录说明,附上执行截图 1.IP处理函数INET_ATON()和INET_NTOA() 1)INET_ATON(expr) 功能:给 ...
- 编写FailServlet和SuccessServlet类
@WebServlet("/successServlet") public class SuccessServlet extends HttpServlet { protected ...
- 认识Spring MVC-概念-小demo
二:SpringMVC 异常码: 405:请求不允许 404:资源不存在 400:参数有问题 500:代码有问题 SpringMvc是Spring FrameWork提供的WEB组件,是目前的主流的实 ...
- 储存环束流3D参数测量系统程序1.0版使用说明
经过几个月的改进,4通道同时采是从3月份开始的,主要通过这两个月的在线测试和不断改进,现在程序弄得还算好用了,可以拿出来分享了. 我这点小伎俩拿出来可千万别觉得我在卖弄,主要是觉得可以为兄弟单位愿意搞 ...
- 安卓逆向 IDA 静态调试分析
1.找到我们分析的接口 2.F5进入C伪代码 修正一下参数,IDA无法正常识别 jstring __fastcall Java_com_example_sfs_MainActivity_getText ...
- 【USACO 2021 US Open, Gold】Permutation
\(\text{Solution}\) 发现每个时刻的状态一定是所有点在一个最外围三角形的内部 设 \(f_{i,j,k,p}\) 表示排列填到第 \(p\) 位,此时图形最外围的三角形是以编号为 \ ...
- 两台linux服务器互相自动备份
转载:csdn https://blog.csdn.net/gjwgjw1111/article/details/103515031