代码 需要自己调节一些参数!!!

同时 平台抓图 需要 jsoncpp 的包 分析json 数据。需要下载。。。。

建议去看官方文档。 很简单的

平台抓图

#include <sstream>
#include "HttpUtil.h"
#include "json/json.h"
#include <opencv2/opencv.hpp>
#include "opencv2/imgcodecs/legacy/constants_c.h"
using namespace httpUtil;static std::string base64Decode(const char *Data, int DataByte) {//解码表const char DecodeTable[] ={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,62, // '+'0, 0, 0,63, // '/'52, 53, 54, 55, 56, 57, 58, 59, 60, 61, // '0'-'9'0, 0, 0, 0, 0, 0, 0,0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, // 'A'-'Z'0, 0, 0, 0, 0, 0,26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, // 'a'-'z'};std::string strDecode;int nValue;int i = 0;while (i < DataByte) {if (*Data != '\r' && *Data != '\n') {nValue = DecodeTable[*Data++] << 18;nValue += DecodeTable[*Data++] << 12;strDecode += (nValue & 0x00FF0000) >> 16;if (*Data != '=') {nValue += DecodeTable[*Data++] << 6;strDecode += (nValue & 0x0000FF00) >> 8;if (*Data != '=') {nValue += DecodeTable[*Data++];strDecode += nValue & 0x000000FF;}}i += 4;} else {Data++;i++;}}return strDecode;
}void zhuatu(){std::string appkey = "";std::string secret = ""; // APPSecretstd::string ip = "";int port = ;int timeout = ;std::stringstream ss;ss << "https://" << ip << ":" << port << "/artemis/api/v1/capturePic";std::cout << ss.str() << std::endl;std::string url = ss.str();std::string cameraIndexCode = "";// Body-----std::string body = "{\"indexCode\": \"" + cameraIndexCode + "\",\"presetCode\":\"3\"}";std::cout << body << std::endl;int dataLen = 0;char *rsp = HTTPUTIL_Post(url.c_str(), body.c_str(), appkey.c_str(), secret.c_str(), timeout, &dataLen);if (NULL == rsp) {int status = HTTPUTIL_GetLastStatus();if (status < HTTPUTIL_ERR_BASE) {}} else {std::string response = std::string(rsp, dataLen);std::cout << "Successful" << std::endl;Json::Reader reader;Json::Value root;if (reader.parse(response, root)) {int type = root["type"].asInt();std::string code = root["code"].asString();std::string msg = root["msg"].asString();if (msg == "SUCCESS") {const Json::Value arrayObj = root["data"];std::string imagedata = arrayObj["imageData"].asString();cv::Mat img;std::string s_mat;s_mat = base64Decode(imagedata.data(), imagedata.size());std::vector<char> base64_img(s_mat.begin(), s_mat.end());img = cv::imdecode(base64_img, CV_LOAD_IMAGE_COLOR);cv::imwrite("1.jpeg",img);cv::imshow("1", img);cv::waitKey(0);}}HTTPUTIL_Free(rsp);}
}

设备抓图

// 联合抓图 在 NET_DVR_Init 前加入 具体可以看我这篇 文章

NET_DVR_SetSDKInitCfg(NET_SDK_INIT_CFG_SDK_PATH, (void *)"/media/chen/娱乐/yaoj/libhpr.so");
NET_DVR_SetSDKInitCfg(NET_SDK_INIT_CFG_SSLEAY_PATH, (void *)"/media/chen/娱乐/yaoj/libssl.so");
NET_DVR_SetSDKInitCfg(NET_SDK_INIT_CFG_LIBEAY_PATH, (void *)"/media/chen/娱乐/yaoj/libcrypto.so");
int func(char * ip = "",WORD port=80,char * name="",char* password="@"){NET_DVR_Init();//设置连接时间与重连时间NET_DVR_SetConnectTime(2000, 1);NET_DVR_SetReconnect(10000, true);// 注册设备LONG lUserID;NET_DVR_DEVICEINFO_V30 struDeviceInfo;lUserID = NET_DVR_Login_V30(ip, port, name, password, &struDeviceInfo);if (lUserID < 0){cout << "errfewfweaf"<<endl;printf("Login error, %d\n", NET_DVR_GetLastError());NET_DVR_Cleanup();Mat s;return 1;}// 33 为通道号if(NET_DVR_PTZPreset_Other(lUserID,33,39,3)){printf("预置位调用成功!");}//---------------------------------------//cvNamedWindow("camera",CV_WINDOW_AUTOSIZE);//定义JPEG图像质量LPNET_DVR_JPEGPARA JpegPara = new NET_DVR_JPEGPARA;JpegPara->wPicQuality = 0;JpegPara->wPicSize = 0xff;char * Jpeg = new char[600*1024];DWORD len = 600*1024;LPDWORD Ret = 0;if(!NET_DVR_SetCapturePictureMode(BMP_MODE)){cout<<"Set Capture Picture Mode error!"<<endl;cout<<"The error code is "<<NET_DVR_GetLastError()<<endl;}//bool capture = NET_DVR_CaptureJPEGPicture(lUserID,1,JpegPara,"1111");vector<char>data(600*1024);bool capture = NET_DVR_CaptureJPEGPicture_NEW(lUserID,33,JpegPara,Jpeg,len,Ret);if(!capture){printf("Error: NET_DVR_CaptureJPEGPicture_NEW = %d", NET_DVR_GetLastError());Mat s;return 1;}for(int i=0;i<600*1024;i++)data[i] = Jpeg[i];Mat img = imdecode(Mat(data),1);NET_DVR_Logout_V30(lUserID);NET_DVR_Cleanup();delete []Jpeg;
}

Linux C++ 海康 设备 直连抓图 和 平台抓图代码~相关推荐

  1. LiveNVR监控流媒体Onvif/RTSP功能支持海康摄像头通过海康SDK接入支持回看倍速播放海康设备存储的设备录像

    LiveNVR功能支持海康摄像头通过海康SDK接入支持回看倍速播放海康设备存储的设备录像 1.流媒体服务说明 2.支持海康SDK接入 3.查看设备录像 3.1.时间轴模式 3.2.列表模式 4.RTS ...

  2. 海康设备通过SDK获取和设置设备网络参数

    目录 1.获取网络相关参数 2.设置网络相关参数 1.获取网络相关参数 //获取设备的网络参数private void getNetCfg(int iUserID) {HCNetSDK.NET_DVR ...

  3. 海康设备接入EasyCVR,出现告警信息缺失且不同步该如何解决?

    EasyCVR可支持设备通过国标GB28181.RTMP.RTSP/Onvif.海康SDK.大华SDK.Ehome等协议接入,对外可分发RTSP.RTMP.FLV.HLS.WebRTC等格式的视频流. ...

  4. 海康设备注册一直失败的问题

    今天用JAVA对接海康设备,但是注册一直失败,ip.端口.用户名.密码都是正确的,一直百思不得其解,后来一番查询与排错,终于找到了原因,是因为没有初始化设备 初始化设备的代码(红框里的部分): if ...

  5. 国标流媒体服务器GB28181协议和海康设备的交互过程记录

    国标GB28181协议从2016年更新后,变得比之前更火了,到今年已经4年了,国标视频流媒体服务器基础的功能都已经发展起来,而更深层次的功能还需要进一步的研发. 在日常运用中,海康的摄像头运用较为广泛 ...

  6. Ehome/ISUP协议海康设备的主动注册管理

    第一步:在平台软件所在网络需映射端口 7660(UDP) 54000-65535(TCP+UDP) 第二步:IE登录海康设备,进入海康设备网络--高级设置--平台接入 第三步:接入类型选择EHome或 ...

  7. 海康设备对接sdk错误码汇总 v6.0

    海康设备对接sdk错误码汇总 v6.0

  8. 使用RTSP协议读海康设备的视频记录

    前言 作为一名搞CV的程序员,我们的输入通常就是视频流.我相信很多人都用的OpenCV提供的VideoCapture函数.就我现在的经验来说,该函数支持以下3种输入: # 方式1:填入索引,表示读取设 ...

  9. 海康监控摄像机接入NTV GBS GB28181平台实现远程调取监控视频

    海康威视各种型号监控摄像头或硬盘录像机(NVR/HVR)接入NTV GBS GB28181平台配置过程都非常简单明了,但有些细节需要注意,避免走弯路踩泥坑. 1.基本要求 1)网络要求 总体来说,只要 ...

最新文章

  1. 图解用Scientific Toolworks Understand分析Microsoft DirectX SDK (June 2010)自带D3D示例
  2. Spring MVC快速入门
  3. windows安装两个版本JDK
  4. 创业公司,怎么用人更划算?
  5. 【2017-02-18】C#基础 - 定义变量,输入输出(最基础的编程,以及灵活多变的编写思维)...
  6. C#模拟POST提交表单(一)--WebClient
  7. 数据结构与算法 | 斐波那契查找
  8. java解析bmp文件
  9. vue-cli多环境配置
  10. DOCKER功能练习
  11. Vue.js 循环语句
  12. 邮件系统IP被CBL列黑,怎么样里面申诉呢?
  13. java序列化与深度克隆
  14. windows 文件路径太深无法删除解决方案
  15. VSCode 常用编程字体
  16. VAV系统类毕业论文文献都有哪些?
  17. 【pwnable.kr】Toddler‘s Bottle-[collision]
  18. 怎么将flac文件转成mp3文件?
  19. java版微信调小i机器人接口说明书_java版微信调用小i机器人
  20. 分割符(split)

热门文章

  1. phpstudy+opencart搭建商城网站基本环境
  2. 冒泡排序从左到右 从右到左方法实现(三种方法)
  3. Python语言程序设计(MOOC崇天)第三章基本数据类型学习笔记(天天向上的力量+文本进度条)
  4. 如何免费创建一个自己的网站(可通过外网访问)
  5. 密码算法详解——AES
  6. 微信小程序常用知识点总结
  7. Ubuntu 18.04.3 双屏显示其中一个屏幕黑屏无法使用的问题 显卡驱动安装问题
  8. 2022年安全员-B证考试题及安全员-B证证考试
  9. 关于CSS中left:50%; top:50%; margin-left: -150px; margin-top: -75px;
  10. FIO测试硬盘IOPS