大立科技DM63红外相机SDK开发Ⅱ-获取仪器红外图像
目录
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;
}
大立科技DM63红外相机SDK开发Ⅱ-获取仪器红外图像的更多相关文章
- DALSA网口线扫相机SDK开发详解例程(C#版)
首先吐槽一句,官方的demos写的真的不好,坑爹啊.对于小白来说,开发官方demos为我所用太难了.为什么呢?因为它Dalsa的DALSA.SaperaLT.SapClassBasic.dll中,不仅 ...
- Dalsa线扫相机SDK开发-小试牛刀(1)
拿到了dalsa相机,可以用Sapera软件配置相机,进行图像采集.但是自己开发的话就得撸起袖子写代码了,查了两篇不错的博文,作为指导. Sapera帮助文档 - <好好先生>专栏 - 博 ...
- Kinect for Windows SDK开发入门(15):进阶指引 下
Kinect for Windows SDK开发入门(十五):进阶指引 下 上一篇文章介绍了Kinect for Windows SDK进阶开发需要了解的一些内容,包括影像处理Coding4Fun K ...
- Kinect for Windows SDK开发入门(二):基础知识 上
原文来自:http://www.cnblogs.com/yangecnu/archive/2012/03/31/KinectSDK_Application_Fundamentals_Part1.htm ...
- Kinect for Windows SDK开发入门(一):开发环境配置
[译]Kinect for Windows SDK开发入门(一):开发环境配置 前几天无意中看到微软发布了Kinect for windows sensor,进去看了一下Kinect应用的例子,发现K ...
- 海康抓拍机SDK开发
前言 项目采购的海康威视的抓拍机,需要首先获取抓拍图片,之后基于抓拍图片进行图像处理.本文基于海康SDK开发文档,按照开发步骤,咨询海康技术人员,现将开发过程记录如下. 主要过程的c++代码: /** ...
- 高拍仪拍照SDK开发(良田影像S300L|S500L)
高拍仪拍照SDK开发下载地址:点击下载 本SDK适用于:良田影像S300L|S500L 高拍仪如图: SDN开发包安装之后找到安装目录,如图: 大家找到各自需要的版本即可,需要注意的是如果需要上传图片 ...
- Vmware Vsphere WebService SDK开发(第一讲)-基本知识学习
刚开始这方面开发的时候,不知道如何下手,能够查到的资料特别少,而且看到很多网友和我一样也在找这方面的资料.接下来的一段时间我就结合自己所参与的项目,完成关于Vmware Vsphere WebServ ...
- Android支付宝SDK开发笔记
一.准备工作 〉1.下载开发包 https://b.alipay.com/order/productDetail.htm?productId=2014110308141993&tabId=4# ...
- 如何使用Add-on SDK开发一个自己的火狐扩展
黄聪:如何使用Add-on SDK开发一个自己的火狐扩展 火狐开放了扩展的开发权限给程序员们,相信很多人都会希望自己做一些扩展来方便一些使用. 我最近做一些项目也需要开发一个火狐扩展,方便收集自己需要 ...
随机推荐
- ApiPost: Error:ESOCKETTIMEDOUT
原因 apipost设置响应时间过短 解决方案
- 如何操作(增、删、改、查)常见的 HTML 元素呢?(包含原生 js 和 JQuery 语法对照)
一.通用的操作示例 1.查询 根据 id 查询(结果为单个对象) // 原生 js 写法 var elementobj = document.getElementById("elementi ...
- 青少年CTF平台-Web-Flag在哪里
平台名称:青少年CTF训练平台 题目名称:Flag在哪里? 解题过程: 启动环境,需要等待大概20秒左右的时间. 访问,页面显示Flag反正不在这. 右键网页,发现无法使用右键. 那么我们直接F12 ...
- 洛谷 P1336 最佳课题选择 题解
P1336 最佳课题选择 题解 状态:考虑\(f_{i,j}\)表示前\(i\)种论文里面,一共写了\(j\)篇,的最少花费时间. 转移策略:我们一次考虑每一种论文写多少篇.假设写\(k\)篇,\(k ...
- 4、Spring之依赖注入
依赖注入就是对类的属性进行赋值 4.1.环境搭建 创建名为spring_ioc_xml的新module,过程参考3.1节 4.1.1.创建spring配置文件 <?xml version=&qu ...
- windows使用nc命令基础下载安装---小白篇
windows使用nc命令 文章源起: 在使用该标题关键词搜索文章,内容多为搬运,且历史悠久. 且,对-l -p 参数未讲解,对小白不友好. 对配置环境变量的方式不理解,误导小白. 对文件解压内容未讲 ...
- 《Linux基础》05. 定时任务调度 · 磁盘分区与挂载 · 网络配置
@ 目录 1:定时任务调度 1.1:crontab 1.2:at 2:磁盘分区与挂载 2.1:原理介绍 2.2:硬盘说明 2.3:磁盘目录情况查询 2.3.1:lsblk 2.3.2:df 2.3.3 ...
- Python 基础面试第三弹
1. 获取当前目录下所有文件名 import os def get_all_files(directory): file_list = [] # os.walk返回一个生成器,每次迭代时返回当前目录路 ...
- 如何使用Vite创建Vue3的uniapp项目
项目结构 my-vue3-project ├─ .env //默认环境变量 ├─ .env.development //开发环境变量 ├─ .eslintrc-auto-import.json //( ...
- Jenkins 忘记密码|密码重置
I. 当前环境 OS Version : AlmaLinux release 8.8 Jenkins Version : 2.414.1 II. 操作步骤 2.1 修改配置文件 1. SSH 登录服务 ...
