基于QT的海康威视网络摄像头的二次开发

、摄像头激活

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

首先,在官网的服务支持->工具软件找到HiTools,下载设备网络搜索工具

 然后用网线连接电脑和摄像头,并连接上电源,打开设备网络搜索工具,直接设置密码(这个密码很重要,忘记密码了可按摄像头的复位键),系统会提示设置密保,点击取消即可。

二、设置IP地址

将IP地址设置成电脑的相同网段的地址。然后使得能够ping通摄像头的IP地址即可。

三、网络连接

在浏览器中输入设备的IP地址,然后登陆即可(默认的账号为admin,密码是在设备网络搜索工具设置的密码)

 一开始登陆进来可能是没有摄像头的画面的,注意WEB界面右上角有一个插件下载,插件下载完成后,预览摄像头画面。

四、海康威视SDK下载

这里需要用到海康威视的SDK,在官网找到这个页面,查看自己电脑的配置,来选择下载。(右键点击->我的电脑->属性x64/x32)下载地址:SDK下载海康开放平台

 五、SDK文件导入

1.在Qt上新建一个工程,简单设置布局后运行,在文件夹中生成build目录,将下载的SDK中库文件拷贝到Qt的pro文件同级目录的新建文件夹lib中。

2.再将SDK中头文件拷贝到Qt的pro文件同级目录新建文件夹include中。

 3.在Qt的pro文件中添加库

 六、源码

最后实现的效果为预览、拍照

注意:在执行Qt程序的时候要选择与SDK和电脑相同位数才行

1.mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include 
#include 
#include 
#include <./include/HCNetSDK.h>
#include <./include/plaympeg4.h>
#include 
#include 
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private slots:void on_pushButton_clicked();void on_pushButton_2_clicked();private:Ui::MainWindow *ui;int lUserID;
};
#endif // MAINWINDOW_H

2.mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#pragma execution_character_set("utf-8")
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);ui->widget_4->setStyleSheet("font-size:25px;");ui->widget_3->setStyleSheet("QWidget#widget_3{border:1px solid #c2c2c2;}");ui->widget_2->setStyleSheet("QWidget#widget_2{border:1px solid #c2c2c2;}");
}
MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_pushButton_clicked()
{bool isok = NET_DVR_Init();if(isok){qDebug() <<"SDK初始化成功";//设置连接时间与重连时间NET_DVR_SetConnectTime(2000, 1);NET_DVR_SetReconnect(10000, true);NET_DVR_DEVICEINFO_V30 struDeviceInfo;lUserID = NET_DVR_Login_V30(const_cast("192.168.204.64"), 8000, const_cast("admin"), const_cast("Cewei06a"), &struDeviceInfo);if (lUserID < 0){qDebug()<<"登录失败: "<graphicsView->winId(); //获取窗口句柄HWND hWnd = (HWND)ui->graphicsView->winId(); //获取窗口句柄NET_DVR_PREVIEWINFO struPlayInfo;struPlayInfo.hPlayWnd = hWnd; //需要 SDK 解码时句柄设为有效值,仅取流不解码时可设为空struPlayInfo.lChannel = 1; //预览通道号struPlayInfo.dwStreamType = 0; //0-主码流,1-子码流,2-码流 3,3-码流 4,以此类推struPlayInfo.dwLinkMode = 0; //0- TCP 方式,1- UDP 方式,2- 多播方式,3- RTP 方式,4-RTP/RTSP,5-RSTP/HTTPstruPlayInfo.bBlocked = 1; //0- 非阻塞取流,1- 阻塞取流int lRealPlayHandle = NET_DVR_RealPlay_V40(lUserID, &struPlayInfo, nullptr, nullptr);if (lRealPlayHandle < 0){qDebug()<<"预览失败: "<

七、运行效果


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部