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

目录

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 <iostream>
#include <windows.h>
#include <conio.h> // 用于读取键盘输入
#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 <iostream>
#include <windows.h>
#include <conio.h> // 用于读取键盘输入
#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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

放氮气的蜗牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值