linux C++ 海康截图Demo

这篇具有很好参考价值的文章主要介绍了linux C++ 海康截图Demo。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

项目结构

​编辑

CMakeLists.txt

代码

camke

​编辑 make

运行 测试

下载 


项目结构

linux C++ 海康截图Demo,C/C++,linux,c++,海康截图Demo

CMakeLists.txt

cmake_minimum_required(VERSION 3.7)

project(CapPictureTest)

include_directories(include)

link_directories(${CMAKE_SOURCE_DIR}/lib ${CMAKE_SOURCE_DIR}/lib/HCNetSDKCom) 

add_executable(CapPictureTest ${CMAKE_SOURCE_DIR}/src/CapPictureTest.cpp)

target_link_libraries(CapPictureTest hcnetsdk)

cmake_minimum_required(VERSION 3.7)

project(CapPictureTest)

include_directories(include)

link_directories(${CMAKE_SOURCE_DIR}/lib ${CMAKE_SOURCE_DIR}/lib/HCNetSDKCom) 

add_executable(CapPictureTest ${CMAKE_SOURCE_DIR}/src/CapPictureTest.cpp)

target_link_libraries(CapPictureTest hcnetsdk)

代码

#include <stdio.h>
#include <iostream>
#include "../include/HCNetSDK.h"
#include <string.h>
using namespace std;

#define HPR_OK 0
#define HPR_ERROR -1

void Demo_SDK_Version()
{
    unsigned int uiVersion = NET_DVR_GetSDKBuildVersion();

    char strTemp[1024] = {0};
    sprintf(strTemp, "HCNetSDK V%d.%d.%d.%d\n",
            (0xff000000 & uiVersion) >> 24,
            (0x00ff0000 & uiVersion) >> 16,
            (0x0000ff00 & uiVersion) >> 8,
            (0x000000ff & uiVersion));

    printf(strTemp);
}

int Demo_Capture(LONG lUserID, NET_DVR_DEVICEINFO_V40 struDeviceInfoV40)
{
    NET_DVR_JPEGPARA strPicPara = {0};
    strPicPara.wPicQuality = 2;
    strPicPara.wPicSize = 0;
    int iRet;

    time_t nowtime = time(NULL);
    struct tm *p;
    p = gmtime(&nowtime);

    char filename[256] = {0};

    sprintf(filename, "./%d-%d-%d %d:%02d:%02d.jpeg", 1900 + p->tm_year, 1 + p->tm_mon, p->tm_mday, 8 + p->tm_hour, p->tm_min, p->tm_sec);

    iRet = NET_DVR_CaptureJPEGPicture(lUserID, struDeviceInfoV40.struDeviceV30.byStartChan, &strPicPara, filename);
    if (!iRet)
    {
        printf("NET_DVR_CaptureJPEGPicture error, %d\n", NET_DVR_GetLastError());
        return HPR_ERROR;
    }
    else
    {
        printf("NET_DVR_CaptureJPEGPicture success filename:%s",filename);
    }
    return HPR_OK;
}

int main()
{
    NET_DVR_Init();
    Demo_SDK_Version();
    NET_DVR_SetLogToFile(3, "./sdkLog");
    char cUserChoose = 'r';

    // Login device
    NET_DVR_USER_LOGIN_INFO struLoginInfo = {0};
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = {0};
    struLoginInfo.bUseAsynLogin = false;

    struLoginInfo.wPort = 8000;
    memcpy(struLoginInfo.sDeviceAddress, "11.101.4.247", NET_DVR_DEV_ADDRESS_MAX_LEN);
    memcpy(struLoginInfo.sUserName, "admin", NAME_LEN);
    memcpy(struLoginInfo.sPassword, "123456", NAME_LEN);

    LONG lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);

    if (lUserID < 0)
    {
        printf("Login error, %d\n", NET_DVR_GetLastError());
        printf("Press any key to quit...\n");
        cin >> cUserChoose;

        NET_DVR_Cleanup();
        return HPR_ERROR;
    }

    while ('q' != cUserChoose)
    {
        printf("\n");
        printf("Input 1, Test Capture Picture\n");
        printf("Input:");

        cin >> cUserChoose;
        switch (cUserChoose)
        {
        case '1':
            Demo_Capture(lUserID, struDeviceInfoV40);
            break;
        default:
            break;
        }
    }

    // logout
    NET_DVR_Logout_V30(lUserID);
    NET_DVR_Cleanup();
    return 0;
}

#include <stdio.h>
#include <iostream>
#include "../include/HCNetSDK.h"
#include <string.h>
using namespace std;

#define HPR_OK 0
#define HPR_ERROR -1

void Demo_SDK_Version()
{
    unsigned int uiVersion = NET_DVR_GetSDKBuildVersion();

    char strTemp[1024] = {0};
    sprintf(strTemp, "HCNetSDK V%d.%d.%d.%d\n",
            (0xff000000 & uiVersion) >> 24,
            (0x00ff0000 & uiVersion) >> 16,
            (0x0000ff00 & uiVersion) >> 8,
            (0x000000ff & uiVersion));

    printf(strTemp);
}

int Demo_Capture(LONG lUserID, NET_DVR_DEVICEINFO_V40 struDeviceInfoV40)
{
    NET_DVR_JPEGPARA strPicPara = {0};
    strPicPara.wPicQuality = 2;
    strPicPara.wPicSize = 0;
    int iRet;

    time_t nowtime = time(NULL);
    struct tm *p;
    p = gmtime(&nowtime);

    char filename[256] = {0};

    sprintf(filename, "./%d-%d-%d %d:%02d:%02d.jpeg", 1900 + p->tm_year, 1 + p->tm_mon, p->tm_mday, 8 + p->tm_hour, p->tm_min, p->tm_sec);

    iRet = NET_DVR_CaptureJPEGPicture(lUserID, struDeviceInfoV40.struDeviceV30.byStartChan, &strPicPara, filename);
    if (!iRet)
    {
        printf("NET_DVR_CaptureJPEGPicture error, %d\n", NET_DVR_GetLastError());
        return HPR_ERROR;
    }
    else
    {
        printf("NET_DVR_CaptureJPEGPicture success filename:%s",filename);
    }
    return HPR_OK;
}

int main()
{
    NET_DVR_Init();
    Demo_SDK_Version();
    NET_DVR_SetLogToFile(3, "./sdkLog");
    char cUserChoose = 'r';

    // Login device
    NET_DVR_USER_LOGIN_INFO struLoginInfo = {0};
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = {0};
    struLoginInfo.bUseAsynLogin = false;

    struLoginInfo.wPort = 8000;
    memcpy(struLoginInfo.sDeviceAddress, "11.101.4.247", NET_DVR_DEV_ADDRESS_MAX_LEN);
    memcpy(struLoginInfo.sUserName, "admin", NAME_LEN);
    memcpy(struLoginInfo.sPassword, "123456", NAME_LEN);

    LONG lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);

    if (lUserID < 0)
    {
        printf("Login error, %d\n", NET_DVR_GetLastError());
        printf("Press any key to quit...\n");
        cin >> cUserChoose;

        NET_DVR_Cleanup();
        return HPR_ERROR;
    }

    while ('q' != cUserChoose)
    {
        printf("\n");
        printf("Input 1, Test Capture Picture\n");
        printf("Input:");

        cin >> cUserChoose;
        switch (cUserChoose)
        {
        case '1':
            Demo_Capture(lUserID, struDeviceInfoV40);
            break;
        default:
            break;
        }
    }

    // logout
    NET_DVR_Logout_V30(lUserID);
    NET_DVR_Cleanup();
    return 0;
}

camke

mkdir build
cd build/
camke ..

mkdir build
cd build/
camke ..

 make

make

 linux C++ 海康截图Demo,C/C++,linux,c++,海康截图Demo

运行 测试

./CapPictureTest 

linux C++ 海康截图Demo,C/C++,linux,c++,海康截图Demo

linux C++ 海康截图Demo,C/C++,linux,c++,海康截图Demo

下载 

Demo 下载文章来源地址https://www.toymoban.com/news/detail-690217.html

到了这里,关于linux C++ 海康截图Demo的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++下OPENCV驱动调用海康GigE工业相机

    第一章 Ubuntu22下OpenCV4.6.0+contrib模块编译安装 第二章 ubuntu22下C++ kdevelop环境搭建:OpenCV示例 第三章 C++下OPENCV驱动调用海康GigE工业相机 在前两章内笔者详细叙述了如何编译以及加载opencv库,本文将从opencv出发,在linux系统下利用海康工业摄像机的SDK完成基于海康工业相机的o

    2024年02月06日
    浏览(54)
  • Qt+OpenCV调用海康相机SDK采集图像(C++)

    配置环境: Qt5.12.5 OpenCV3.4.9 海康MVS3.1.0 开发工具:QT Creator-4.11.0 1.1)添加海康的库: 将海康SDK库MVSDevelopmentIncludes和MVSDevelopmentLibrarieswin64下复制到自己的工程目录下 然后把库添加到.pro文件中 点击下一步之后就会在.pro文件中出现如下代码 然后在这后面加上以下代码,添

    2024年02月08日
    浏览(48)
  • 海康威视相机-LINUX SDK 开发

    相机: MV-CS020-10GC 系统:UBUNTU 22.04 语言:C++ 工具:cmake 海康官网下载SDK 运行下面的命令进行安装 安装完成后从在/opt/MVS 路径下就有了相关的库,实际上我们开发的时候只需要lib和include。有兴趣的同学也可以尝试以下Samples的例子。make一下就能生成可执行文件。如果make报错

    2024年02月11日
    浏览(44)
  • sqlite | c++ | demo

    sqlite 过得的废话 就不细说了 接下来,主要讲 安装sqlite 然后写一个demo ,然后再shell 命令操作sqlite demoe 的链接在下方 c++demo ######################### 然后在shell 中查看数据库 ############################################

    2024年01月17日
    浏览(28)
  • Qt+opencv+Linux+海康工业相机连接

           本人需要在树莓派上部署深度学习推理模型 ,由于本实验室只有海康工业相机,因此通过借鉴博客和自主调试,完成了模型的部署。本文主要讲述如何在基于linux的Qt中成功连接海康工业相机,第一次尝试写博客,练练手感。       1、安装海康工业相机自带的MVS  

    2024年02月01日
    浏览(56)
  • C++调用opencv和windows api完成桌面窗口截图——以梦幻西游为例

    项目编写的C++程序,根据输入的字符串,遍历所有桌面窗口标题,查找包含该标题的窗口,对该桌面窗口进行截图,以梦幻西游为例 输入:桌面窗口包含的字符串 比如输入“梦幻”,程序就会截取桌面“梦幻西游”的窗口 输出:该桌面窗口的截图,数据类型为opencv的Mat矩阵

    2024年02月21日
    浏览(34)
  • Linux中使用selenium截图的文字变为方框的解决方案

    最近在Linux中使用selenium截图时,发现文字都变为了方框: 虽然不影响selenium的使用,但有点影响调试,也不好看,后面发现是因为Linux缺少中文字体的缘故,需要安装中文字体就能解决。 先检查 /usr/share 目录下是否有有 fonts 和 fontconfig 目录,如果没有则需要执行下面的命令

    2024年02月08日
    浏览(42)
  • 二百一十一、Flume——Flume实时采集Linux中的Hive日志写入到HDFS中(亲测、附截图)

    为了实现用Flume实时采集Hive的操作日志到HDFS中,于是进行了一场实验 [root@hurys23 conf]# find / -name hive.log /home/log/hive312/hive.log [root@hurys23 conf]# vi  flume-file-hdfs.conf # Name the components on this agent a2.sources = r2 a2.sinks = k2 a2.channels = c2 # Describe/configure the source a2.sources.r2.type = exec a2.sources

    2024年02月04日
    浏览(65)
  • 【C/C++】使用C++和Direct3D (d3d)获取屏幕截图并根据传入分辨率进行缩放图片大小

    目录 一,函数清单 1.Direct3DCreate9 函数 2.IDirect3D9::CreateDevice 方法 3.IDirect3DDevice9::GetDisplayMode 方法 4.IDirect3DDevice9::CreateOffscreenPlainSurface 方法 5.IDirect3DDevice9::GetFrontBufferData 方法 6.IDirect3DDevice9::D3DXLoadSurfaceFromSurface 方法 7. D3DXSaveSurfaceToFile 函数 二,关键代码实现 三,最终实现

    2024年01月18日
    浏览(48)
  • 一百五十六、Kettle——Linux上安装的Kettle9.3连接ClickHouse数据库(亲测,附流程截图)

    kettle9.3在Linux上安装好后,需要与ClickHouse数据库建立连接 1、kettle版本是9.3 2、ClickHouse版本是21.9.5.16   https://pan.baidu.com/s/1iqGyXsTaQSCHEbjj7yX7AA 提取码: mvzd 注意 : clickhouse-plugins文件里就是自定义的clickhouse驱动jar包    注意 : 要区分Linux系统架构是64位还是32位, 它们所属的L

    2024年02月12日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包