欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

海康网路摄像头/监控 Ubuntu 16.04 SDK C++ 实现拍照存档

发布时间:2024/3/24 79 豆豆
生活随笔 收集整理的这篇文章主要介绍了 海康网路摄像头/监控 Ubuntu 16.04 SDK C++ 实现拍照存档 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

海康网路摄像头/监控Ubuntu 16.04 SDK C++ 实现拍照存档

一 SDK环境准备

  • 海康SDK官方网址

  • 硬件: DS-2CD3125F2-I

  • 相机SDK: CH-HCNetSDKV6.1.6.3_build20200925_Linux64

  • 系统: Ubuntu 16.04

  • C++ 会用到的就lib与include档案, include 在CH-HCNetSDKV6.1.6.3_build20200925_Linux64/consoleDemo/include, lib在CH-HCNetSDKV6.1.6.3_build20200925_Linux64/lib

  • 加入环境, 不懂CMake怎配置,只好乱加至少能make, 我把folder名字换成hikvision_camera_sdk,include拉了出来跟lib同层,将lib的路径export,
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/user/hikvision_camera_sdk/lib/HCNetSDKCom:/home/user/hikvision_camera_sdk/lib

  • 海康API说明在设备网络SDK编程指南(DVR&NVR).pdf 都有, consoleDemo也有范例

  • 二 监控拍图存影像

    • CMakeLists.txt
    cmake_minimum_required(VERSION 3.0.2) project(hikvision_camera_test) set(CMAKE_CXX_STANDARD 11)link_directories("/home/user/hikvision_camera_sdk/lib/") link_libraries(AudioRender) link_libraries(HCCore) link_libraries(hcnetsdk) link_libraries(hpr) link_libraries(PlayCtrl)include_directories(/home/user/hikvision_camera_sdk/include/ ) add_executable(test_save_img test/test_save_img.cc) target_link_libraries(test_save_img PUBLIC)
    • 拍照存档
    #include <stdio.h> #include <string.h> #include "HCNetSDK.h" #include <iostream> #include <cstdlib>int main() {NET_DVR_Init();long lUserID;//loginNET_DVR_USER_LOGIN_INFO struLoginInfo = {0};NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = {0};struLoginInfo.bUseAsynLogin = false;// 监控端口struLoginInfo.wPort = 8000;// 监控IPmemcpy(struLoginInfo.sDeviceAddress, "192.168.1.101",NET_DVR_DEV_ADDRESS_MAX_LEN);// 监控账号memcpy(struLoginInfo.sUserName, "admin", NAME_LEN);// 监控密码memcpy(struLoginInfo.sPassword, "123456", NAME_LEN);lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);if (lUserID < 0){printf("pyd1---Login error, %d\n", NET_DVR_GetLastError());exit(-1);}NET_DVR_JPEGPARA strPicPara = {0};strPicPara.wPicQuality = 2;strPicPara.wPicSize = 0;int iRet;std::string img_path = "/home/user/Pictures/test.jpg";iRet = NET_DVR_CaptureJPEGPicture(lUserID, struDeviceInfoV40.struDeviceV30.byStartChan,&strPicPara, const_cast<char*>(img_path.c_str()));if (!iRet) {printf("pyd1---NET_DVR_CaptureJPEGPicture error, %d\n",NET_DVR_GetLastError());exit(-1);} else {printf("Save img at %s\n", img_path.c_str());}//logoutNET_DVR_Logout_V30(lUserID);NET_DVR_Cleanup();return 0; }
    • 编译一下,就可以成功拍照且存档了

    Troubleshooting

    • undefine reference 或 .so not found 或 pyd1—NET_DVR_CaptureJPEGPicture error, 107=> 没有link_libraries或没设定好LD_LIBRARY_PATH
    • can’t find HCNetSDK.h => include_directories 没设定
    • libcrypto.so.1.0.0 warning跳出多行 => 直接删掉海康SDK的libcrypto.so.1.0.0

    总结

    以上是生活随笔为你收集整理的海康网路摄像头/监控 Ubuntu 16.04 SDK C++ 实现拍照存档的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。