海康威视网络设备SDK中绘制直线
1 ,首先说明系统是Ubuntu 16,基于海康威视网络设备SDK的开发,用QT开发的。
2,目的是想要在显示的视频上面绘制直线和矩形框。
3,难点是因为在Linux环境下,没有网络设备sdk开发的接口,所以一开始就想着直接在视频上覆盖一个透明背景,并且在这一背景下,可以显示我想要显示的矩形框。但是哪想到做一个透明背景并不是那样简单,始终会覆盖掉视频显示。只好想调用海康的绘图回调函数处理这个事情。
4,因为播放器SDK有那个绘图回调函数,所以就想用它。
解决办法是,用网络设备SDK对接设备,取到视频流之后,不要直接用网络设备SDK显示,而是用播放器SDK显现,之后调用播放器SDK的绘图接口函数,并调用绘图回调函数,就能实现绘图。
5,我的代码段如下:
一定要用播放库SDK的接口来解码,
NET_DVR_RealPlay_V40((*it).getUsrID(), &struPlayInfo, RealDataCallBack,this);
在回调函数RealDataCallBack中实现解码,核心接口函数是:
PlayM4_Play(lPort, hWnd);
然后就可以调用画直线的接口函数和回调函数(DrawFunCB)了,this指针将我们需要的数据传入回调函数中。
PlayM4_RegisterDrawFun(sdkPort, DrawFunCB, this);
画图回调函数:
void CALLBACK DrawFunCB(int nPort,PLAYM4_HDC hDc, void* nUser)
{RealPlay* m_realplay=reinterpret_cast<RealPlay*>(nUser);float x0,x1,y0,y1;x0=(float)m_realplay->m_start_point.x();y0=(float)m_realplay->m_start_point.y();x1=(float)m_realplay->m_end_point.x();y1=(float)m_realplay->m_end_point.y();x0=x0/(m_realplay->m_pframePlay->width())*2-1;x1=x1/(m_realplay->m_pframePlay->width())*2-1;y0=1-y0/(m_realplay->m_pframePlay->height())*2;y1=1-y1/(m_realplay->m_pframePlay->height())*2;glColor4f(1.0f,0.0f,0.0f,1.0f);glLineWidth(6);glBegin(GL_LINES);glVertex2f( x0, y0);glVertex2f( x1, y1);glEnd();return;
}
参数中有nPort,是使用PlayM4_GetPort(&lPort)接口获取的。
因为在linux下面,无法用常规的widow下的画图函数,咨询了海康威视的技术后,要glColor4f()等函数来绘图。这些函数是在OpenGl(需要在linux环境下安装)中的。OpenGl安装教程链接:
https://blog.csdn.net/qq_35865125/article/details/83042766
绘图函数的头文件是:
#include <GL/gl.h>
海康威视网络设备SDK中绘制直线相关推荐
- 图像处理控件功能演示: 在 C# 中绘制直线、圆弧、椭圆、矩形等形状
Aspose.Imaging for .NET是一个可以让开发人员可以创建.编辑.画图.转换图像的图像处库,提供了一些开发平台原有功能基础之上的一些新特性.它独立于其他应用程序, Aspose.Ima ...
- z字扫描和光栅扫描的转换_扫描转换计算机图形中的直线
z字扫描和光栅扫描的转换 扫描转换直线 (Scan Converting a Straight Line) For the scan conversion of a straight line, we ...
- OpenCV-Python教程:绘制直线、圆形、方形(line,circle,rectangle)
原文链接:http://www.juzicode.com/archives/5323 返回Opencv-Python教程 因为绘图操作需要用到起点.终点坐标等参数,绘图前需要先了解在OpenCV中图像 ...
- java canvas类画直线_canvas教程(二) 绘制直线
经过 canvas 教程(一) 简介 我们知道了 canvas 的一些基本情况 而本次是给大家带来直线的绘制 canvas 中,基本图形有两种,一种是直线,还有一种是曲线但是无论是直线还是曲线,我们都 ...
- java canvas 画线_canvas教程(二) 绘制直线
经过 而本次是给大家带来直线的绘制 canvas 中,基本图形有两种,一种是直线,还有一种是曲线 但是无论是直线还是曲线,我们都应该先了解 canvas 的坐标系 s canvas 的坐标系 要绘制之 ...
- iOS 画线 绘制直线、矩形、三角形
转载:http://bravoo.diandian.com/ 在UIView中绘制直线.矩形.三角形 直线 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 ...
- 利用OpenCV的霍夫变换线检测函数HoughLines()得到直线的ρ和θ值后绘制直线的原理详解
为了更好地看懂本文,大家可以先看下我写的另一篇博文,链接如下: https://blog.csdn.net/wenhao_ir/article/details/51774444 OpenCV的霍夫变换 ...
- canvas 绘制直线 并选中_在画布中使用路径-Canvas的基本操作
一.在画布中使用路径 beginPath() 新建一条路径,路径一旦创建成功,图形绘制命令被指向到路径上生成路径moveTo(x, y) 把画笔移动到指定的坐标(x, y).相当于设置路径的起始点坐标 ...
- Linux环境中对海康威视工业相机SDK进行二次开发(QT+CMake+Opencv+海康SDK)
关于在Windows环境中对海康威视工业相机SDK进行二次开发的话,可以参考这两篇博客. 海康威视工业相机SDK二次开发(VS+Opencv+QT+海康SDK+C++)(一) 海康威视工业相机SDK二 ...
最新文章
- 的注册表怎么才能删干净_洗鞋怎么清洗才能清洗干净?洗鞋店洗鞋怎么清洗的这么干净? 篇幅一...
- iphone字体_iOS 13终于能换花式字体了?!发在朋友圈里真的超好看!
- ad 卡尔曼_对Kalman(卡尔曼)滤波器的理解
- CF-241 E.Flights(差分约束)
- linux mysql 最小安装,Linux最小化安装之安装mysql
- Linux的常用网络命令
- 获取表结构信息(字段名,类型,长度,精度,小数位数,主键,自动增长)...
- BigTable论文翻译
- ios获取设备手持方向——电子罗盘
- Ease睡眠APP竞品分析报告
- Webview下载apk
- Linux基础命令(管理工具)
- struts上传word和excel文件到oracle,Struts文件上传,下载,重传,预览
- 计算机修改中文,Netflix修改简体中文的方法
- Rust应用调用C语言动态库
- 如何共享模型构建器?
- deepin安装mysql
- 2017年1月19日
- 驾照科目一——2、中华人民共和国道路交通安全法实施条例
- linux天气时钟,预报天气时钟软件预约-预报天气时钟手机版v1.0-Linux公社
热门文章
- 《财务自由之路》读后感
- 内网渗透:二、内网渗透的信息收集
- C++客户端和java服务端互相加解密
- 基于监督学习+自监督学习的智能抠图,精确到头发丝 | CVPR2020
- java 实现重定义数组类似于VB的ReDim
- 【重温SSM框架系列】1 - Spring快速入门(配置文件及API详解)
- ESP8266作为arduino D1 wifi模块应用时引脚序号说明(与UNO对比异同)2.5.0版本开发板库
- 带声调的拼音字符比较特殊
- 传奇服务器列表文档,MirServer(传奇服务端)
- ad服务器做虚拟化,VMware ESXi 4.1新特性之AD服务器集成