海康威视SDK实例QtDemo显示NVR视频窗口(Linux+Qt)

海康威视SDK实例QtDemo显示NVR视频窗口(Linux+Qt)

陈拓 2021/07/312021/08/01

1. 概述

在《海康威视客户端iVMS-4200连接NVR》

https://zhuanlan.zhihu.com/p/395137370

https://blog.csdn.net/chentuo2000/article/details/119298486

一文中我们通过海康威视客户端iVMS-4200连接NVR。

本文我们通过海康SDK连接NVR。

2. 下载SDK

海康威视:https://www.hikvision.com/cn/

  • 下载地址

https://open.hikvision.com/download/5cda567cf47ae80dd41a54b3?type=10

  • 文档下载

  • 程序包下载

CH-HCNetSDKV6.1.6.45_build20210302_linux64_20210428163105.zip

  • 解压

3. 安装QT

见《在Win10的Linux子系统Ubuntu中使用Qt》

https://zhuanlan.zhihu.com/p/393630007

https://blog.csdn.net/chentuo2000/article/details/119146380

4. 编译海康官方实例

4.1 复制实例文件

  • 复制QtDemo

将前面下载的海康SDK中的文件夹QtDemo复制到我们在《在Win10的Linux子系统Ubuntu中使用Qt》一文中创建的目录hk中。

在WSL中的目录hk

对应Win10的目录:

C:\Users\admin\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\rootfs\home\ccdc\hk

  • 修改权限

chmod -R 755 QtDemo

  •  复制库文件

进入QtDemo

查看qt_demo_readme.txt

将SDK/lib下所有so文件拷贝到QtDemo/Linux64/lib

修改权限

chmod -R 755 Linux64/lib

4.2 编译

  • 进入目录Linux64

  • 运行Qt Creator

qtcreator

 

  • 打开项目

File > Open File or Project…

选择项目,Open

  • 编译

Build > Build All

有错误。

  • 改错

实例代码是用Qt4.7编写的,我用Qt5,要修改代码,要修改的地方很多。

1) 修改编码

所以出现下面提示的地方都要改:

选择编码:

使用GBK编码,否则中文乱码。

2) QtGui/QDialog找不到

Qt版本的问题去掉QtGui/。还有很多同样的错误,所有出现这个错误的地方都要改。

3)  error: 'UnicodeUTF8' is not a member of 'QApplication'

原因是:QCoreApplication::UnicodeUTF8已被弃用。解决方法:

修改

setText(QApplication::translate("MainWindow", "&Quitar", 0, QApplication::UnicodeUTF8));

setText(QApplication::translate("MainWindow", "&Quitar", 0);

4)  error: ‘class QHeaderView’ has no member named ‘setResizeMode’

解决方法:

将 setResizeMode 替换为为 setSectionResizeMode

即将:

table->verticalHeader()->setResizeMode(QHeaderView::ResizeToContents); 

table->horizontalHeader()->setResizeMode(QHeaderView::ResizeToContents);

替换为

table->verticalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);

table->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);

5) error: ‘setCodecForTr’ is not a member of ‘QTextCodec’

Qt5以前涉及到中文要用下面三行:

QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));

QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));

QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));

Qt5删除了QTextCodec的成员函数setCodecForTr和setCodecForCStrings:

QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));

QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));

解决方法,注释掉上面两行。

修改,编译,再修改,再编译,直到没有错误。

  • 再编译

没有错误,警告不管它。

编译完成

4.3 运行

  • F5或者点击左下角的Run按钮运行程序

  • 右击device tree登录

登录设置:

OK

选择通道:

双击选择的通道:

  • 实时监控Preview

  • 回放Playback

  • 4
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晨之清风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值