图漾相机——Sample_V1示例程序

文章目录

  • 1.SDK支持的平台类型
    • 1.1 Windows 平台
    • 1.2 Linux平台
  • 2.SDK基本知识
    • 2.1 SDK目录结构
    • 2.2 设备组件简介
    • 2.3 设备组件属性
    • 2.4 设备的帧数据管理机制
    • 2.5 SDK中的坐标系变换
  • 3.Sample_V1示例程序
    • 3.1 DeviceStorage
    • 3.2 DumpCalibInfo
    • 3.3 NetStatistic
    • 3.4 SimpleView_SaveLoadConfig
    • 3.5 SimpleView_FetchFrame
    • 3.6 SimpleView_Callback
    • 3.7 SimpleView_SGBM
  • 参考

1.SDK支持的平台类型

1.1 Windows 平台

Windows SDK 支持 X86(32位)和 X64(64位)硬件平台,并提供支持 Window7 及以上版本操作系统的驱动文件。

1.2 Linux平台

Linux SDK 支持 AArch64、ARMv7hf、RaspberryPi、i686 和 x86-64 硬件平台,并为开发者编译程序提供相应平台的库文件。

2.SDK基本知识

2.1 SDK目录结构

Include:头文件

TYApi.h:设备操作的常规接口
TYCoordinateMapper.h:坐标系变换相关接口
TYImageProc.h:畸变校正/滤波接口
TyIsp.h:RAW RGB数据的软ISP处理代码

Lib :
各类平台下的动态库文件及windows平台下sample程序
sample:
SDK中示例代码,通过CMake跨平台自动构建项目,详细功能参见在线文档:https://doc.percipio.xyz/cam/latest/getstarted/compile.html

2.2 设备组件简介

TY_DEVICE_COMPONENT_LIST(TYApi.h):

TY_COMPONENT_DEVICE:用于设置相机本身属性,例如触发属性,网口相机的IP参数等
TY_COMPONENT_DEPTH_CAM:用于设置深度相机属性,例如是能深度数据通道,设置深度数据分辨率等
TY_COMPONENT_IR_CAM_LEFT :用于设置左IR相机属性
TY_COMPONENT_IR_CAM_RIGHT:用于设置右IR相机属性
TY_COMPONENT_LASER:用于设置激光器属性,例如激光器强度,设置激光器自动控制使能等
TY_COMPONENT_RGB_CAM:用于设置RGB相机属性,例如使能RGB通道数据,设置RGB分辨率,曝光时间,增益等

2.3 设备组件属性

TY_FEATURE_ID_LIST:

1.相机的所有组件所有属性
2.并不是相机会支持这里面所有的属性,可通过API接口TYHasFeature的返回值判断是否支持。
3.属性的设置/获取可以通过API接口进行操作: TYSetBool/TYSetInt/TYSetFloat/TYSetStruct…
TYGetBool/TYGetInt/TYGetFloat/TYGetStruct…

4.部分属性参数存在一个range范围,可通过API接口TYGetIntRange/ TYGetFloatRange读取。

2.4 设备的帧数据管理机制

1.设备初始化的时候设置好使能的通道/分辨率/格式之后,可通过API接口TYGetFrameBufferSize获取Frame包大小。
2.可根据获取的Frame包尺寸分配buffer
3.调用TYEnqueueBuffer将分配的buffer加入到SDK的数据缓冲队列中。
4.调用TYFetchFrame将能从SDK缓冲队列中获取一帧数据。
5.处理完数据之后,重新调用TYEnqueueBuffer将buffer重新加入SDK缓冲队列。

在这里插入图片描述

设备的帧数据管理机制示意图

2.5 SDK中的坐标系变换

深度图的像素坐标系和空间坐标系(点云)

TYMapDepthToPoint3d/ TYMapDepthImageToPoint3d TYMapPoint3dToDepth/TYMapPoint3dToDepthImage

点云空间坐标系变换

TYMapPoint3dToPoint3d

深度图和RGB图像素坐标系变换

TYMapDepthToColorCoordinate/TYMapDepthImageToColorCoordinate
TYMapRGBImageToDepthCoordinate

3.Sample_V1示例程序

下面运行exe程序,可以通过鼠标右键+shift按键,打开powershell运行

3.1 DeviceStorage

该示例程序用于操作custom_block.bin和isp_block.bin的存储空间。
使用方法:
1.操作custom_block.bin 存储空间

1)写入文件内容:将1.txt文件中的内容写入custom_block.bin。
运行示例程序:

.\DeviceStorage.exe -id 207000151696 -b custom -i 1.txt

2)读出内存中的文件内容并输出到程序运行目录下。
运行示例程序:

.\DeviceStorage.exe -id 207000151696 -b custom -o 2.txt

注释:207000151696是相机序列号,根据实际情况更改

2.操作isp_block.bin存储空间

1)写入文件内容:将1.txt文件中的内容写入isp_block.bin 。
运行示例程序:

.\DeviceStorage.exe -id 207000151696 -b isp -i 1.txt

2)读出内存中的文件内容并输出到程序运行目录下。
运行示例程序:

.\DeviceStorage.exe -id 207000151696 -b isp -o 2.txt

3.2 DumpCalibInfo

SDK3.6.52之后版本新增示例程序,此示例程序可以将相机的标定参数以json文件的形式导出到本地。
使用方法:
1.导出原始的标定参数文件:

.\DumpCalibInfo.exe -id 相机序列号 -cs 0 -ds 0 -out_json FM855-E1-G.json

-cs 0 :表示设置RGB分辨率为列表中的第一个
-ds 0:表示设置depth分辨率为列表中的第一个
-out_json:指定输出文件的名字及路径

2.导出当前的标定参数文件:

.\DumpCalibInfo.exe -id 207000151696 -cs 1 -ds 2  -mode 0 -out_json FM855-E1-G.json

-mode 0:表示读取当前设置后的标定参数,读取到的内参会随分辨率变化,其他模式均为原始的标定参数。

3.3 NetStatistic

该示例程序用于测试网络相机图像的丢包率。
示例程序如下:

TY_CAMERA_STATISTICS st;
ASSERT_OK( TYGetStruct(hDevice, TY_COMPONENT_DEVICE, TY_STRUCT_CAM_STATISTICS, &st, sizeof(st)) );
LOGI("Statistics:");
LOGI("  packetReceived: %" PRIu64 " ", st.packetReceived);
LOGI("  packetLost    : %" PRIu64 " ", st.packetLost);
LOGI("  imageOutputed : %" PRIu64 " ", st.imageOutputed);
LOGI("  imageDropped  : %" PRIu64 " ", st.imageDropped);

packetReceived:上位机共收到的数据包数量
packetLost:上位机共未收到的数据包数量
imageOutputed:上位机总的收到的图像数量(与数据流个数成整倍数关系)
imageDropped:上位机总的未收到的图像数量

3.4 SimpleView_SaveLoadConfig

该示例程序给出了保存/导出相机配置参数的demo。

参数配置文件有自己的格式,格式错误会校验不通过,从而功能失效。
若需正确的参数配置文件,请使用PV软件导出一份。

使用方法:
1.将参数配置文件导入相机存储空间
运行示例程序:

.\SimpleView_SaveLoadConfig.exe -id 207000151696 -s FM855.json

2.将参数配置文件导出到本地程序运行目录下
运行示例程序:

.\SimpleView_SaveLoadConfig.exe -id 207000151696 -o fm855.json
  1. write_parameters_to_storage
    向DeviceStorage写入包含featrue配置的json数据
  2. load_parameters_from_storage
    从DeviceStorage读出json并解码出json然后配置到相机

常见错误反馈:

1.Error: The configuration file is too large, the maximum size should not exceed 4000 bytes:写入存储空间时,文件内容大于存储空间的大小
2.Error: The CRC check code is empty:加载参数时,存储空间没有内容
3.parameters load fail!:用write_parameters_to_storage()写入的文件内容错误,格式不匹配
4.Error: The data in the storage area has a CRC check error.:
存储空间的文件内容,不是以write_parameters_to_storage()接口写入的,在调用load_parameters_from_storage()时将返回此错误

3.5 SimpleView_FetchFrame

该示例程序用于深度相机工作在自由采集模式下连续采集图像并输出图像数据。
在这里插入图片描述

3.6 SimpleView_Callback

该示例程序用于深度相机工作在自由采集模式下连续采集图像,在独立的数据处理线程(防止堵塞图像数据获取)中进行 OpenCV 渲染,并输出图像数据。

sample/common/TYThread.cpp提供了简单的线程创建接口,通过开启线程循环fetch图像,以避免主线程的阻塞。

在这里插入图片描述

3.7 SimpleView_SGBM

SGM是一种用于计算双目视觉中视差(disparity)的半全局匹配算法,在OpenCV中的实现为semi-global block matching(SGBM)。

在这里插入图片描述

参考

1.双目立体匹配算法SGBM
https://blog.csdn.net/A_L_A_N/article/details/81490043?spm=1001.2014.3001.5506
2.双目立体匹配博客&资料汇总
https://blog.csdn.net/qq_38233873/article/details/135450586?spm=1001.2014.3001.5506

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/69688.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea对jar包内容进行反编译

1.先安装一下这个插件java Bytecode Decompiler 2.找到这个插件的路径,在idea的plugins下面的lib文件夹内:java-decompiler.jar。下面是我自己本地的插件路径,以作参考: D:\dev\utils\idea\IntelliJ IDEA 2020.1.3\plugins\java-d…

1.五子棋对弈python解法——2024年省赛蓝桥杯真题

问题描述 原题传送门:1.五子棋对弈 - 蓝桥云课 "在五子棋的对弈中,友谊的小船说翻就翻?" 不!对小蓝和小桥来说,五子棋不仅是棋盘上的较量,更是心与心之间的沟通。这两位挚友秉承着"友谊第…

基于STM32的智能停车场管理系统设计

目录 引言系统设计 硬件设计软件设计 系统功能模块 车辆识别与进出管理模块车位检测与引导模块计费与支付模块数据存储与查询模块远程监控与异常报警模块 控制算法 车牌识别与车辆进出管理算法车位检测与引导算法计费与支付处理算法数据存储与远程反馈算法 代码实现 车辆检测与…

单细胞-第五节 多样本数据分析,打分R包AUCell

文件在单细胞\5_GC_py\1_single_cell\3.AUCell.Rmd 1.基因 rm(list = ls()) load("g.Rdata")2.AUCell https://www.ncbi.nlm.nih.gov/pmc/articles/PMC9897923 IF: NA NA NA用这个文章里的方法,将单细胞亚群的marker基因与ros相关基因取交集,用作AUCell的基因集…

蓝牙技术在物联网中的应用有哪些

蓝牙技术凭借低功耗、低成本和易于部署的特性,在物联网领域广泛应用,推动了智能家居、工业、医疗、农业等多领域发展。 智能家居:在智能家居系统里,蓝牙技术连接各类设备,像智能门锁、智能灯泡、智能插座、智能窗帘等。…

NLP深度学习 DAY5:Seq2Seq 模型详解

Seq2Seq(Sequence-to-Sequence)模型是一种用于处理输入和输出均为序列任务的深度学习模型。它最初被设计用于机器翻译,但后来广泛应用于其他任务,如文本摘要、对话系统、语音识别、问答系统等。 核心思想 Seq2Seq 模型的目标是将…

单细胞-第四节 多样本数据分析,下游画图

文件在单细胞\5_GC_py\1_single_cell\2_plots.Rmd 1.细胞数量条形图 rm(list ls()) library(Seurat) load("seu.obj.Rdata")dat as.data.frame(table(Idents(seu.obj))) dat$label paste(dat$Var1,dat$Freq,sep ":") head(dat) library(ggplot2) lib…

NLP模型大对比:Transformer >Seq2Seq > LSTM > RNN > n-gram

结论 Transformer 大于 传统的Seq2Seq 大于 LSTM 大于 RNN 大于 传统的n-gram n-gram VS Transformer 我们可以用一个 图书馆查询 的类比来解释它们的差异: 一、核心差异对比 维度n-gram 模型Transformer工作方式固定窗口的"近视观察员"全局关联的&q…

Julius AI 人工智能数据分析工具介绍

Julius AI 是一款由 Casera Labs 开发的人工智能数据分析工具,旨在通过自然语言交互和强大的算法能力,帮助用户快速分析和可视化复杂数据。这款工具特别适合没有数据科学背景的用户,使数据分析变得简单高效。 核心功能 自然语言交互&#x…

H3CNE-31-BFD

Bidirectional Forwarding Dection,双向转发检查 作用:毫秒级故障检查,通常结合三层协议(静态路由、vrrp、ospf、BGP等),实现链路故障快速检查。 BFD配置示例 没有中间的SW,接口down&#xff…

2025最新版MySQL安装使用指南

2025最新版MySQL安装使用指南 The Installation and Usage Guide of the Latest Version of Oracle MySQL in 2025 By JacksonML 1. 获取MySQL 打开Chrome浏览器,访问官网链接:https://www.mysql.com/ ,随即打开MySQL官网主页面&#xff…

[前端开发]记录国内快速cdn库,用于在线引入JavaScript第三方库

字节跳动的两个库,官网地址如下,搜索时优先找第一个,可用来链接axios,Boostrap等等第三方库 1. 字节跳动静态资源公共库 比如说搜索lodash,用于节流防抖的库,点击复制即可,一般是****.js或****.min.js这样的为后缀名的链接 点击复制即可, <script src"https://lf9-cd…

【云安全】云原生-K8S-搭建/安装/部署

一、准备3台虚拟机 务必保证3台是同样的操作系统&#xff01; 1、我这里原有1台centos7&#xff0c;为了节省资源和效率&#xff0c;打算通过“创建链接克隆”2台出来 2、克隆之前&#xff0c;先看一下是否存在k8s相关组件&#xff0c;或者docker相关组件 3、卸载原有的docker …

vim交换文件的作用

1.数据恢复&#xff1a;因为vim异常的退出&#xff0c;使用交换文件可以恢复之前的修改内容。 2.防止多人同时编辑&#xff1a;vim检测到交换文件的存在,会给出提示&#xff0c;以避免一个文件同时被多人编辑。 &#xff08;vim交换文件的工作原理&#xff1a;vim交换文件的工作…

【Block总结】OutlookAttention注意力,捕捉细节和局部特征|即插即用

论文信息 标题: VOLO: Vision Outlooker for Visual Recognition作者: Li Yuan, Qibin Hou, Zihang Jiang, Jiashi Feng, Shuicheng Yan代码链接: https://github.com/sail-sg/volo论文链接: https://arxiv.org/pdf/2106.13112 创新点 前景注意力机制: VOLO引入了一种称为“…

【Unity3D】实现横版2D游戏角色二段跳、蹬墙跳、扶墙下滑

目录 一、二段跳、蹬墙跳 二、扶墙下滑 一、二段跳、蹬墙跳 GitHub - prime31/CharacterController2D 下载工程后直接打开demo场景&#xff1a;DemoScene&#xff08;Unity 2019.4.0f1项目环境&#xff09; Player物体上的CharacterController2D&#xff0c;Mask添加Wall层…

premierePro 2022创建序列方式

概念 序列类似于画画的画布&#xff0c;类似ps的蒙层 一、新建序列方式 1、文件-新建-序列 2、直接将视频拖入时间轴&#xff08;没有序列时&#xff0c;如果有序列不行&#xff09; 3、右键右下角空白处 4、点击新建项按钮

九大服务构建高效 AIOps 平台,全面解决GenAI落地挑战

最近,DevOps运动的联合创始人Patrick Debois分享了他对AI平台与软件研发关系的深刻见解,让我们一起来探讨这个话题。 在AI的落地过程中,我们面临着两个主要难题: 引入AI编码工具后的开发者角色转变:随着像GitHub Copilot这样的AI工具的普及,工程师的角色正在发生深刻变革…

Golang :用Redis构建高效灵活的应用程序

在当前的应用程序开发中&#xff0c;高效的数据存储和检索的必要性已经变得至关重要。Redis是一个快速的、开源的、内存中的数据结构存储&#xff0c;为各种应用场景提供了可靠的解决方案。在这个完整的指南中&#xff0c;我们将学习什么是Redis&#xff0c;通过Docker Compose…

对顾客行为的数据分析:融入2+1链动模式、AI智能名片与S2B2C商城小程序的新视角

摘要&#xff1a;随着互联网技术的飞速发展&#xff0c;企业与顾客之间的交互方式变得日益多样化&#xff0c;移动设备、社交媒体、门店、电子商务网站等交互点应运而生。这些交互点不仅为顾客提供了便捷的服务体验&#xff0c;同时也为企业积累了大量的顾客行为数据。本文旨在…