图漾相机——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
- write_parameters_to_storage
向DeviceStorage写入包含featrue配置的json数据- 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
相关文章:
图漾相机——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 DeviceStorage3.2 DumpCalibInfo3.3 NetStatistic3.4 SimpleView_SaveLoad…...
系统架构设计师教材:信息系统及信息安全
信息系统 信息系统的5个基本功能:输入、存储、处理、输出和控制。信息系统的生命周期分为4个阶段,即产生阶段、开发阶段、运行阶段和消亡阶段。 信息系统建设原则 1. 高层管理人员介入原则:只有高层管理人员才能知道企业究竟需要什么样的信…...
Kafka 深入客户端 — 事务
Kafka 事务确保了数据在写入Kafka时的原子性和一致性。 1 幂等 幂等就是对接口的多次调用所产生的结果和调用一次是一致的。 Kafka 生产者在进行重试的时候可能会写入重复的消息,开启幂等性功能后就可以避免这种情况。将生产者客户端参数enable.idempotence设置为…...
TensorFlow 2基本功能和示例代码
TensorFlow 2.x 是 Google 开源的一个深度学习框架,广泛用于构建和训练机器学习模型。 一、核心特点 1. Keras API 集成 TensorFlow 2.x 将 Keras 作为其核心 API,简化了模型的构建和训练流程。Keras 提供了高层次的 API,易于使用和理解。…...
ZZNUOJ(C/C++)基础练习1011——1020(详解版)
1011 : 圆柱体表面积 题目描述 输入圆柱体的底面半径r和高h,计算圆柱体的表面积并输出到屏幕上。要求定义圆周率为如下宏常量 #define PI 3.14159 输入 输入两个实数,表示圆柱体的底面半径r和高h。 输出 输出一个实数,即圆柱体的表面积&…...
Python 字典:快速掌握高效的数据存储方式
文章目录 一、什么是字典?字典的定义二、字典的基本操作1. 访问字典的值2. 修改字典中的值3. 添加新的键值对4. 删除键值对5. 获取字典长度三、字典的遍历1. 遍历键2. 遍历值3. 遍历键值对四、字典的常用方法1. `keys()`:获取所有键2. `values()`:获取所有值3. `items()`:获…...
Baklib探索内容中台的核心价值与实施策略
内容概要 在数字化转型的背景下,内容中台逐渐成为企业数字化策略中的关键组成部分。内容中台是一个集成的内容管理体系,旨在打破信息孤岛,使内容能够在各个业务部门和平台之间高效流通。这种管理体系不仅能够提升内容的生产效率,…...
网络安全攻防实战:从基础防护到高级对抗
📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 引言 在信息化时代,网络安全已经成为企业、政府和个人必须重视的问题。从数据泄露到勒索软件攻击,每一次…...
论文阅读(十三):复杂表型关联的贝叶斯、基于系统的多层次分析:从解释到决策
1.论文链接:Bayesian, Systems-based, Multilevel Analysis of Associations for Complex Phenotypes: from Interpretation to Decision 摘要: 遗传关联研究(GAS)报告的结果相对稀缺,促使许多研究方向。尽管关联概念…...
13.zookeeper开机自启动配置
要在Linux(RHEL7.7)系统中设置zookeeper开机自启动,可以创建一个系统服务单元文件。以下是为详细配置部署,假设你已经安装了zookeeper并且可以通过zkServer.sh命令启动它。 1.进入/lib/systemd/system目录 命令: cd /lib/systemd/system [root@rhel77 system]# cd /lib/…...
“““【运用 R 语言里的“predict”函数针对 Cox 模型展开新数据的预测以及推理。】“““
主题与背景 本文主要介绍了如何在R语言中使用predict函数对已拟合的Cox比例风险模型进行新数据的预测和推理。Cox模型是一种常用的生存分析方法,用于评估多个因素对事件发生时间的影响。文章通过具体的代码示例展示了如何使用predict函数的不同参数来获取生存概率和…...
Oracle Primavera P6 最新版 v24.12 更新 1/2
目录 引言 P6 PPM 更新内容 1. 在提交更新基线前预览调整 2. 快速轻松地取消链接活动 3. 选择是否从 XER 文件导入责任经理 4. 提高全局变更报告的清晰度 5. 将整个分层代码值路径导出到 CPP 6. 里程碑活动支持所有关系类型 6. 时间表批准 7. 性能改进 8. 安装改进 …...
AI大模型开发原理篇-2:语言模型雏形之词袋模型
基本概念 词袋模型(Bag of Words,简称 BOW)是自然语言处理和信息检索等领域中一种简单而常用的文本表示方法,它将文本看作是一组单词的集合,并忽略文本中的语法、词序等信息,仅关注每个词的出现频率。 文本…...
JavaWeb学习-SpringBotWeb开发入门(HTTP协议)
(一)SpringBotWeb开发步骤 (1)创建springboot工程,并勾选开发相关依赖 (2)定义HelloController类,添加方法hello,并添加注解 (3)运行测试 (二)HTTP入门概述 创建请求页面 package com.itheima.demo3; /*请求处理类,加上注解标识为请求处理类*/import org.spr…...
网站结构优化:加速搜索引擎收录的关键
本文来自:百万收录网 原文链接:https://www.baiwanshoulu.com/9.html 网站结构优化对于加速搜索引擎收录至关重要。以下是一些关键策略,旨在通过优化网站结构来提高搜索引擎的抓取效率和收录速度: 一、合理规划网站架构 采用扁…...
本地部署deepseek模型步骤
文章目录 0.deepseek简介1.安装ollama软件2.配置合适的deepseek模型3.安装chatbox可视化 0.deepseek简介 DeepSeek 是一家专注于人工智能技术研发的公司,致力于打造高性能、低成本的 AI 模型,其目标是让 AI 技术更加普惠,让更多人能够用上强…...
【deepseek】deepseek-r1本地部署-第二步:huggingface.co替换为hf-mirror.com国内镜像
一、背景 由于国际镜像国内无法直接访问,会导致搜索模型时加载失败,如下: 因此需将国际地址替换为国内镜像地址。 二、操作 1、使用vscode打开下载路径 2、全局地址替换 关键字 huggingface.co 替换为 hf-mirror.com 注意:务…...
sunrays-framework配置重构
文章目录 1.common-log4j2-starter1.目录结构2.Log4j2Properties.java 新增两个属性3.Log4j2AutoConfiguration.java 条件注入LogAspect4.ApplicationEnvironmentPreparedListener.java 从Log4j2Properties.java中定义的配置读取信息 2.common-minio-starter1.MinioProperties.…...
Spark Streaming的背压机制的原理与实现代码及分析
Spark Streaming的背压机制是一种根据JobScheduler反馈的作业执行信息来动态调整Receiver数据接收率的机制。 在Spark 1.5.0及以上版本中,可以通过设置spark.streaming.backpressure.enabled为true来启用背压机制。当启用背压机制时,Spark Streaming会自…...
刷题记录 贪心算法-2:455. 分发饼干
题目:455. 分发饼干 难度:简单 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸&a…...
360大数据面试题及参考答案
数据清理有哪些方法? 数据清理是指发现并纠正数据文件中可识别的错误,包括检查数据一致性,处理无效值和缺失值等。常见的数据清理方法有以下几种: 去重处理:数据中可能存在重复的记录,这不仅会占用存储空间,还可能影响分析结果。通过对比每条记录的关键属性,若所有关键…...
【大模型】Ollama+AnythingLLM搭建RAG大模型私有知识库
文章目录 一、AnythingLLM简介二、搭建本地智能知识库2.1 安装Ollama2.2 安装AnythingLLM 参考资料 一、AnythingLLM简介 AnythingLLM是由Mintplex Labs Inc.开发的一个全栈应用程序,是一款高效、可定制、开源的企业级文档聊天机器人解决方案。AnythingLLM能够将任…...
深入MapReduce——从MRv1到Yarn
引入 我们前面篇章有提到,和MapReduce的论文不太一样。在Hadoop1.0实现里,每一个MapReduce的任务并没有一个独立的master进程,而是直接让调度系统承担了所有的worker 的master 的角色,这就是Hadoop1.0里的 JobTracker。在Hadoop1…...
arkui-x 前端布局编码模板
build() {Column() {Row() {// 上侧页面布局实现}// 下侧页面布局实现}.width(Const.THOUSANDTH_1000).height(Const.THOUSANDTH_1000).justifyContent(FlexAlign.SpaceBetween).backgroundImage($r(app.media.background_xxx)).backgroundImageSize(ImageSize.Cover).backgrou…...
代理模式 -- 学习笔记
代理模式学习笔记 什么是代理? 代理是一种设计模式,用户可以通过代理操作,而真正去进行处理的是我们的目标对象,代理可以在方法增强(如:记录日志,添加事务,监控等) 拿一…...
sem_init的概念和使用案例
sem_init 是 POSIX 线程库中用于初始化未命名信号量(unnamed semaphore)的函数,常用于多线程或多进程间的同步。以下是其概念和使用案例的详细说明: 概念 函数原型: #include <semaphore.h>int sem_init(sem_t …...
JVM_类的加载、链接、初始化、卸载、主动使用、被动使用
①. 说说类加载分几步? ①. 按照Java虚拟机规范,从class文件到加载到内存中的类,到类卸载出内存为止,它的整个生命周期包括如下7个阶段: 第一过程的加载(loading)也称为装载验证、准备、解析3个部分统称为链接(Linking)在Java中数据类型分为基本数据类型和引用数据…...
ProfibusDP主机与从机交互
ProfibusDP 主机SD2索要数据下发:68 08 F7 68 01 02 03 21 05 06 07 08 1C 1668:SD2 08:LE F7:LEr 68:SD2 01:目的地址 02:源地址 03:FC_CYCLIC_DATA_EXCHANGE功能码 21:数据地址 05,06,07,08&a…...
Java设计模式:结构型模式→组合模式
Java 组合模式详解 1. 定义 组合模式(Composite Pattern)是一种结构型设计模式,它允许将对象组合成树形结构以表示“部分-整体”的层次。组合模式使得客户端能够以统一的方式对待单个对象和对象集合的一致性,有助于处理树形结构…...
【福州市AOI小区面】shp数据学校大厦商场等占地范围面数据内容测评
AOI城区小区面样图和数据范围查看: — 字段里面有name字段。分类比较多tpye:每个值代表一个类型。比如字段type中1549代表小区住宅,1563代表学校。小区、学校等占地面积范围数据 —— 小区范围占地面积面数据shp格式 无偏移坐标,只…...
