关于武汉高芯coin417G2红外机芯的二次开发

2024-09-07 21:36

本文主要是介绍关于武汉高芯coin417G2红外机芯的二次开发,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前言
  • 一、外观和机芯参数
  • 二、SDK的使用
    • 1、打开相机
    • 2、回调函数中获取全局温度和图像
    • 3、关闭相机


前言

最近工作中接触了一款基于武汉高芯科技有限公司开发的红外模组,即coin417g2(测温型)+9.1mm镜头.使用此模组,开发了一套红外热成像检测桌面应用程序.下面简单记录下该模组的使用.

一、外观和机芯参数

如下是该机芯的外观和机芯参数:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、SDK的使用

这里使用的是linux_sdk_usb2.0_v.1.1.5_aarch64-linux-gnu-gcc-8.4.0版本.

1、打开相机

int ret = guide_usb_initial();
if(ret < 0){g_pLog->log_E(QString::fromLocal8Bit("初始化相机失败,ret=%1").arg(ret));return -1;
}
else{g_pLog->log_I(QString::fromLocal8Bit("初始化相机成功,ret=%1").arg(ret));ret = guide_usb_opencommandcontrol((OnSerialDataReceivedCB)serailCallBack);if(ret < 0){g_pLog->log_E(QString::fromLocal8Bit("开启机芯控制命令通信失败,ret=%1").arg(ret));return -1;}else{g_pLog->log_I(QString::fromLocal8Bit("开启机芯控制命令通信成功"));}
}
m_deviceInfo = (guide_usb_device_info_t*)malloc(sizeof (guide_usb_device_info_t));
m_deviceInfo->width = IMAGEWIDTH;
m_deviceInfo->height = IMAGEHEIGHT;
m_deviceInfo->video_mode = Y16_PARAM_YUV;  //观瞄mode:YUV_PARAM  //测温mode:Y16_PARAM_YUV
ret = guide_usb_openstream(m_deviceInfo,(OnFrameDataReceivedCB)frameCallBack,(OnDeviceConnectStatusCB)connectStatusCallBack);
if(ret < 0)
{g_pLog->log_E(QString::fromLocal8Bit("打开视频流失败,ret=%1").arg(ret));return -1;
}
else{g_pLog->log_I(QString::fromLocal8Bit("打开视频流成功"));
}

2、回调函数中获取全局温度和图像

int serailCallBack(guide_usb_serial_data_t *pSerialData)
{int i = 0;for (i = 0;i< pSerialData->serial_recv_data_length;i++){if(i== (pSerialData->serial_recv_data_length-1)){printf("%x\n",pSerialData->serial_recv_data[i]);fflush(stdout);}else{printf("%x ",pSerialData->serial_recv_data[i]);fflush(stdout);}}return 1;
}int connectStatusCallBack(guide_usb_device_status_e deviceStatus)
{if(deviceStatus == DEVICE_CONNECT_OK){printf("VideoStream Capture start...\n");fflush(stdout);g_pLog->log_I(QString::fromLocal8Bit("连接正常"));}else{printf("VideoStream Capture end...\n");fflush(stdout);g_pLog->log_I(QString::fromLocal8Bit("断开连接"));}return 1;
}int frameCallBack(guide_usb_frame_data_t *pVideoData)
{//回调函数中建议只对数据入队,其他操作建议另起线程处理//YUV数据  [pVideoData->frame_yuv_data:机芯送出来的YUV数据] yuv422 uyvy//Y16数据  [pVideoData->frame_src_data:机芯送出来的Y16数据] for measure//参数行数据[pVideoData->paramLine:机芯送出来的参数行数据]if(m_mutex.try_lock()){if(m_dataQueue.size() <1){guide_usb_measure_external_param_t param;param.distance = 50;param.emiss = 98;param.relHum = 60;param.reflectedTemper = 230;param.atmosphericTemper = 230;param.modifyK = 100;param.modifyB = 0;//int ret = guide_usb_measure_convertgray2temper(1,1,pVideoData->frame_src_data,(uchar*)pVideoData->paramLine,IMAGEWIDTH*IMAGEHEIGHT,&param,pTemper);if(ret >= 0){cv::Mat yuvimg = cv::Mat(IMAGEHEIGHT,IMAGEWIDTH,CV_8UC2,pVideoData->frame_yuv_data);cv::Mat bgrImg;cv::cvtColor(yuvimg, bgrImg,  cv::COLOR_YUV2BGR_Y422);m_dataQueue.enqueue(bgrImg);}}m_mutex.unlock();}else{QThread::usleep(10);}return 1;
}

3、关闭相机

int ret = guide_usb_closestream();
if(ret < 0){g_pLog->log_E(QString::fromLocal8Bit("关闭视频流失败,ret=%1").arg(ret));
}
else{g_pLog->log_I(QString::fromLocal8Bit("关闭视频流成功"));
}ret = guide_usb_closecommandcontrol();
if(ret < 0){g_pLog->log_E(QString::fromLocal8Bit("关闭机芯控制命令通信失败,ret=%1").arg(ret));
}
else{g_pLog->log_I(QString::fromLocal8Bit("关闭机芯控制命令通信成功"));
}ret = guide_usb_exit();
if(ret < 0){g_pLog->log_E(QString::fromLocal8Bit("清除数据释放内存失败,ret=%1").arg(ret));
}
else{g_pLog->log_I(QString::fromLocal8Bit("清除数据释放内存成功"));
}
if(m_deviceInfo != NULL)
{free(m_deviceInfo);m_deviceInfo = NULL;
}
if(paraData != NULL)
{free(paraData);paraData = NULL;
}

这篇关于关于武汉高芯coin417G2红外机芯的二次开发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1146225

相关文章

Superset二次开发之Select 筛选器源码分析

路径:superset-frontend/src/filters/components/Select  源码文件: 功能点: 作用 交互 功能 index.ts作为模块的入口点,导出其他文件中定义的主要组件和函数。它使其他文件中的导出可以被外部模块使用。 SelectFilterPlugin.tsx 定义主要的插件类 SelectFilterPlugin 和组件 Sele

了解elementUI的底层源码, 进行二次开发

Element UI 是一个基于 Vue.js 的桌面端组件库,广泛用于构建美观、交互友好的用户界面。要深入理解 Element UI 的底层源码并进行二次开发,你需要掌握以下几个关键点: Vue.js 原理 Element UI 是基于 Vue.js 构建的,因此首先需要熟悉 Vue.js 的核心概念和机制,包括: ● 组件系统:Vue.js 的组件化思想,如何定义组件、使用组件、传递属性和事

人体红外传感器简介

人体红外传感器的工作原理是利用热释电效应,将人体发出的特定波长的红外线转化为电信号,从而实现对人体的检测和感知。               具体来说,人体红外传感器主要由滤光片、热释电探测元和前置放大器组成。滤光片的作用是使特定波长的红外辐射选择性地通过,到达热释电探测元,而在其截止范围外的红外辐射则不能通过。热释电探测元是传感器的核心元件,当它受到非恒定强度的红外光照射时,会产生

NX二次开发—进阶(二)

一、创建圆弧 在NX上通过代码画出圆弧,定义起始和终止位置,还有圆心位置和半径 创建圆弧,需要获取CSYS的矩阵ID,通过UF_CURVE_create_arc函数进行创建 //定义参数UF_CURVE_arc_t arc;arc.start_angle = 0.0;arc.end_angle = 225 * DEGRA;//DEGRA=PI/180//中心坐标arc.arc_center

NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南001

由于需要对NFI进行汉化,以及二次开发,首先要下载源码以后编辑通过,NIFI的源码,项目非常多,编译过程中需要编译超过570个jar包,同时编译过程很慢需要30多分钟. 1.首先下载NIFI源码,根据需要下载对应版本: https://github.com/kemixkoo/orchsym-runtime/   首先介绍一下,这个是一个公司根据nifi进行定制开发的,已经汉化,但是不能商

NX二次开发——进阶(一)

一、链表及相关函数的用法 函数说明UF_MODL_create_list创建一个链表,并返回链表的头指针UF_MODL_put_list_item插入元素到链表中,不检验对象是否重复,或者已经存在UF_MODL_ask_list_count获取链表对象数量,从头开始遇到null_tag结束UF_MODL_ask_list_item查询链表对象标识,给个位置返回标识UF_MODL_delete_l

​​NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南002

继续,执行pom.xml引入依赖以后,发现以下几种报错: 可以看到在下载aws-java-sdk-bundle 1.12.710版本的时候报错了 可以看到日志信息,就是在阿里云上下载的,因为阿里云上缺少这个jar包 aws-java-sdk-bundle-1.12.710.jar 这个jar包,我还特意去阿里云上查询了一下 https://developer.aliyun.com/

恋爱相亲交友系统源码原生源码可二次开发APP 小程序 H5,web全适配

直播互动:平台设有专门的直播间,允许房间主人与其他异性用户通过视频连线的方式进行一对一互动。语音视频交流:异性用户可以发起语音或视频通话,以增进了解和交流。群组聊天:用户能够创建群聊,邀请自己关注的异性朋友加入,以便进行多人在线交流。虚拟礼品赠送:平台提供多样化的虚拟礼物,不同礼物有不同的价值,用户可以用来表达好感或支持。私人消息:异性用户之间可以互相发送私人信息,不过平台为了维护用户体验,对

UG二次开发CreateDialog函数在UI.hxx文件和WinUser.h中的冲突

文章出自https://blog.csdn.net/qq_41843732/article/details/91422764 在UG二次开发中,若使用MFC库,一旦加上#include<Afx.h>头文件,下面这句话就报错 theDialog = GetPoints::theUI->CreateDialog(theDlxFileName); 解决CreateDialog函数在UI.hx

PHPCMS 二次开发技巧

1.如果要对已存在的控制器进行二次开发,为了方便升级不建议直接对内核文件直接修改该,您可以通过"MY_*.php"的形式进行二次开发。 例如您要对改phpcms/mood/index.php进行二次开发。您可以在与index.php同级的目录下建立"MY_index.php"  MY_index.php代码如下     <? php        class