大立科技DM63红外相机SDK开发Ⅱ-获取仪器红外图像

大立科技DM63红外相机SDK开发Ⅱ-获取仪器红外图像_第1张图片

目录

1、开发准备

 2、导入头文件

 3、数据初始化

4、获取红外图像

5、关闭红外图像

6、完整代码


1、开发准备

为了方便发开,需要下载Visual Studio,本开发基于Visual Studio 2022,使用C++。

通过Visual Studio创建好项目后,将DMSDK V1.16.3内所有文件复制到创建好的项目文件内。

 2、导入头文件

 通过Visual Studio在源文件处创建C++文件,用来开发,如下图所示。

 

在C++文件内包含所需要使用的头文件。

#include 
#include 
#include  // 用于读取键盘输入
#include "DMSDK.h"
#pragma comment(lib, "DMSDK.lib")

 3、数据初始化

我们要获取仪器的红外图像不能单纯直接靠DM_OpenMonitor获取,需要先创建一个图像窗口,然后通过DM_OpenMonitor将图像映射到图像窗口上。注意!!!这里的端口和连接仪器的端口不一样,这里是5000!!!

//创建图像窗口
HWND videoWindow = CreateWindow(L"STATIC", L"红外图像", WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT, CW_USEDEFAULT, 320 * 2, 240 * 2,
    NULL, NULL, NULL, NULL);

DM_Init();
DM_PlayerInit(videoWindow);

// 显示窗口
ShowWindow(videoWindow, true);
//数据初始化
char ipAddress[] = "192.168.1.2"; // 替换为实际的仪器IP地址
unsigned short port = 5000; // 替换为实际的端口
int channel = 0; // 替换为实际的通道号

4、获取红外图像

现在通过DM_OpenMonitor将图像映射到图像窗口上,并判断是否映射成功。

int handle = DM_OpenMonitor(videoWindow, ipAddress, port, channel);

if (handle >= 0) {
    std::cout << "视频监控打开成功,连接句柄:" << handle << std::endl;
    //等待按下Esc键
    std::cout << "按下Esc键关闭视频监控..." << std::endl;
    while (!_kbhit() || _getch() != 27) { // 按下的键不是Esc键,则继续等待
        // 在此处可以执行其他操作

    }
}
else {
    std::cout << "视频监控打开失败" << std::endl;
}

5、关闭红外图像

不需要红外图像后,需要先关闭视频监控,再清除资源内存。

// 关闭视频监控
int closeResult = DM_CloseMonitor(handle);
if (closeResult >= 0) {
    std::cout << "视频监控关闭成功" << std::endl;

    // 清除资源
    int cleanupResult = DM_PlayerCleanup();
    if (cleanupResult > 0) {
        std::cout << "资源清除成功" << std::endl;
    }
    else {
        std::cout << "资源清除失败" << std::endl;
    }
}
else {
    std::cout << "视频监控关闭失败" << std::endl;
}

6、完整代码

#include 
#include 
#include  // 用于读取键盘输入
#include "DMSDK.h"
#pragma comment(lib, "DMSDK.lib")

int main() {
    
    // 初始化DMSDK
    HWND videoWindow = CreateWindow(L"STATIC", L"红外图像", WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT, 320 * 2, 240 * 2,
        NULL, NULL, NULL, NULL);

    DM_Init();
    DM_PlayerInit(videoWindow);

    // 显示视频
    ShowWindow(videoWindow, true);
    //UpdateWindow(videoWindow);

    // 打开视频监控
    char ipAddress[] = "192.168.1.2"; // 替换为实际的仪器IP地址
    unsigned short port = 5000; // 替换为实际的端口
    int channel = 0; // 替换为实际的通道号
    int handle = DM_OpenMonitor(videoWindow, ipAddress, port, channel);

    if (handle >= 0) {
        std::cout << "视频监控打开成功,连接句柄:" << handle << std::endl;
        //等待按下Esc键
        std::cout << "按下Esc键关闭视频监控..." << std::endl;
        while (!_kbhit() || _getch() != 27) { // 按下的键不是Esc键,则继续等待
            // 在此处可以执行其他操作

        }
    }
    else {
        std::cout << "视频监控打开失败" << std::endl;
    }
    // 关闭视频监控
    int closeResult = DM_CloseMonitor(handle);
    if (closeResult >= 0) {
        std::cout << "视频监控关闭成功" << std::endl;

        // 清除资源
        int cleanupResult = DM_PlayerCleanup();
        if (cleanupResult > 0) {
            std::cout << "资源清除成功" << std::endl;
        }
        else {
            std::cout << "资源清除失败" << std::endl;
        }
    }
    else {
        std::cout << "视频监控关闭失败" << std::endl;
    }
    return 0;
}

你可能感兴趣的:(SDK发开,科技,SDK开发,c++)