海康威视网络设备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二 ...
最新文章
- A monad tutorial for Clojure programmers (part 3)
- ArcGIS For JavaScript API 默认参数
- PyQt5 技术篇-QComboBox下拉框绑定监听事件实例演示
- java课程设计进程管理_GitHub - Shadow-Java/OS: 操作系统课程设计,关键词:进程同步与互斥、进程死锁、LRU页面替换算法、时间片轮转算法、时钟等...
- html5日程管理系统,有条不紊:四款桌面日程管理软件横测
- php server vscode,如何使用code-server打造自己的云端VSCode?
- 京东总部4号楼即将投入使用:建面超过13万平方米 耗时644天
- 10_隐马尔科夫模型HMM2_统计学习方法
- linux文件自动改名,C#如何在生成文件夹或者文件时候自动重命名
- 可控硅型号怎样识别_可控硅是什么_可控硅型号_可控硅分类及判别_可控硅种类...
- java jbutton 不显示_java让JButton按钮变成不可见
- Java基础2一基础语法
- linux常见权限相关错误及解决
- VS自带工具:dumpbin的使用查看Lib,dll等
- 【互联网及其应用】第4章网络应用技术
- 使用apipost工具快速生成在线接口文档
- python运行代码无反应_linux执行python命令后没有反应,不打印日志信息
- OWASP zap 代理设置
- 云呐|固定资产盘点中,支持多种盘点方式(资产清查盘点)
- [Shader] Shader Cookbook 理解光照模型[3]