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

热门文章

  1. 移动式自动气象站优势
  2. 腾讯测试题-满二叉排序树根节点
  3. 自制RC自动驾驶+遥控智能小车
  4. 法院判定360恶意打压金山网盾 赔款30万元
  5. 数学一年级应用题_一年级下册数学应用题专项训练题
  6. 数梦工场7.5亿元都干点啥?
  7. Oracle汉字实现拼音码函数
  8. VS Code 这么牛,再次印证了一句名言
  9. 第一次学习使用Pyqt5心得和体会(UI可以生成py文件,UI和业务逻辑最好分开,即UI生成py后,再写一个main.py来放置业务逻辑)
  10. unity查找物体的几种方式