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中绘制直线相关推荐

  1. 图像处理控件功能演示: 在 C# 中绘制直线、圆弧、椭圆、矩形等形状

    Aspose.Imaging for .NET是一个可以让开发人员可以创建.编辑.画图.转换图像的图像处库,提供了一些开发平台原有功能基础之上的一些新特性.它独立于其他应用程序, Aspose.Ima ...

  2. z字扫描和光栅扫描的转换_扫描转换计算机图形中的直线

    z字扫描和光栅扫描的转换 扫描转换直线 (Scan Converting a Straight Line) For the scan conversion of a straight line, we ...

  3. OpenCV-Python教程:绘制直线、圆形、方形(line,circle,rectangle)

    原文链接:http://www.juzicode.com/archives/5323 返回Opencv-Python教程 因为绘图操作需要用到起点.终点坐标等参数,绘图前需要先了解在OpenCV中图像 ...

  4. java canvas类画直线_canvas教程(二) 绘制直线

    经过 canvas 教程(一) 简介 我们知道了 canvas 的一些基本情况 而本次是给大家带来直线的绘制 canvas 中,基本图形有两种,一种是直线,还有一种是曲线但是无论是直线还是曲线,我们都 ...

  5. java canvas 画线_canvas教程(二) 绘制直线

    经过 而本次是给大家带来直线的绘制 canvas 中,基本图形有两种,一种是直线,还有一种是曲线 但是无论是直线还是曲线,我们都应该先了解 canvas 的坐标系 s canvas 的坐标系 要绘制之 ...

  6. 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 ...

  7. 利用OpenCV的霍夫变换线检测函数HoughLines()得到直线的ρ和θ值后绘制直线的原理详解

    为了更好地看懂本文,大家可以先看下我写的另一篇博文,链接如下: https://blog.csdn.net/wenhao_ir/article/details/51774444 OpenCV的霍夫变换 ...

  8. canvas 绘制直线 并选中_在画布中使用路径-Canvas的基本操作

    一.在画布中使用路径 beginPath() 新建一条路径,路径一旦创建成功,图形绘制命令被指向到路径上生成路径moveTo(x, y) 把画笔移动到指定的坐标(x, y).相当于设置路径的起始点坐标 ...

  9. Linux环境中对海康威视工业相机SDK进行二次开发(QT+CMake+Opencv+海康SDK)

    关于在Windows环境中对海康威视工业相机SDK进行二次开发的话,可以参考这两篇博客. 海康威视工业相机SDK二次开发(VS+Opencv+QT+海康SDK+C++)(一) 海康威视工业相机SDK二 ...

最新文章

  1. 的注册表怎么才能删干净_洗鞋怎么清洗才能清洗干净?洗鞋店洗鞋怎么清洗的这么干净? 篇幅一...
  2. iphone字体_iOS 13终于能换花式字体了?!发在朋友圈里真的超好看!
  3. ad 卡尔曼_对Kalman(卡尔曼)滤波器的理解
  4. CF-241 E.Flights(差分约束)
  5. linux mysql 最小安装,Linux最小化安装之安装mysql
  6. Linux的常用网络命令
  7. 获取表结构信息(字段名,类型,长度,精度,小数位数,主键,自动增长)...
  8. BigTable论文翻译
  9. ios获取设备手持方向——电子罗盘
  10. Ease睡眠APP竞品分析报告
  11. Webview下载apk
  12. Linux基础命令(管理工具)
  13. struts上传word和excel文件到oracle,Struts文件上传,下载,重传,预览
  14. 计算机修改中文,Netflix修改简体中文的方法
  15. Rust应用调用C语言动态库
  16. 如何共享模型构建器?
  17. deepin安装mysql
  18. 2017年1月19日
  19. 驾照科目一——2、中华人民共和国道路交通安全法实施条例
  20. linux天气时钟,预报天气时钟软件预约-预报天气时钟手机版v1.0-Linux公社

热门文章

  1. 《财务自由之路》读后感
  2. 内网渗透:二、内网渗透的信息收集
  3. C++客户端和java服务端互相加解密
  4. 基于监督学习+自监督学习的智能抠图,精确到头发丝 | CVPR2020
  5. java 实现重定义数组类似于VB的ReDim
  6. 【重温SSM框架系列】1 - Spring快速入门(配置文件及API详解)
  7. ESP8266作为arduino D1 wifi模块应用时引脚序号说明(与UNO对比异同)2.5.0版本开发板库
  8. 带声调的拼音字符比较特殊
  9. 传奇服务器列表文档,MirServer(传奇服务端)
  10. ad服务器做虚拟化,VMware ESXi 4.1新特性之AD服务器集成