图漾相机搭配VisionPro使用简易教程

文章目录

  • 1.下载并安装VisionPro软件
  • 2.下载PercipioCameraForVisionPro软件包
  • 3.软件部署
  • 4.测试流程
    • 4.1 遍历VisionPro SDK支持的参数
    • 4.2 设置示例
      • 4.2.1_cameraSingle.SetTriggerMode
      • 4.2.2 _cameraSingle.SetRegistration
      • 4.2.3_cameraSingle.SetInt
      • 4.2.4 _cameraSingle.GetInt
      • 4.2.5 _cameraSingle.SetBool
      • 4.2.6 _cameraSingle.GetBool
      • 4.2.7 _cameraSingle.SetEnum
      • 4.2.8 _cameraSingle.GetEnum
      • 4.2.9 _cameraSingle.SetFloat
      • 4.2.10 _cameraSingle.GetFloat
      • 4.2.11 _cameraSingle.SetScaleUnit
      • 4.2.12 _cameraSingle.GetScaleUnit
  • 5.常见FAQ

1.下载并安装VisionPro软件

请自行下载VisonPro软件。

VisionPro 9.0/9.5/9.6版本经测试,可正常打开图漾相机,建议使用图漾测试过的版本。

2.下载PercipioCameraForVisionPro软件包

使用浏览器下载:https://gitee.com/percipioxyz/camport3_visionpro

使用 git 指令获取本地副本:打开终端,切换到需存放 SDK 的工作目录下,输入 git clone 命令克隆远程仓库。

git clone https://gitee.com/percipioxyz/camport3_visionpro.git

3.软件部署

1.将 PercipioCamera.dll、PercipioCameraExtern.dll、tycam.dll 、opencv_world460.dll拷贝到 VisionPro 的 bin 目录,如果是默认安装,路径位于 C:\ProgramFiles\Cognex\VisionPro\bin
2.将 PercipioCameraToolBlock.vtt 拷贝到 VisonPro 工具模板目录。如果是默认安装,路径位于 C:\ProgramFiles\Cognex\VisionPro\bin\Templates\Tools
3.进入VisionPro后,依次点击下图中的位置,调PercipioCameraToolBlock工具。
在这里插入图片描述
4.点击PercipioCameraToolBlock界面的“输入/输出”
在这里插入图片描述

PercipioCameraToolBlock的输入参数说明:
1.CameraId:需要打开的相机序列号。
2.Z:相机与投影平面在 Z 方向的距离,单位 mm,将深度图向此投影平面做正交投影。结合该距离下的相机视野和深度图分辨率,可以求出单个像素大小 (mm) ,用于后续计算。
3.ScaleUnit:配置相机的ScaleUnit,以输出不同精度的深度值。
4.RegistrationMode:RGBD对齐开关。0:不对齐;1:rgb2depth;2:depth2rgb。

4.测试流程

4.1 遍历VisionPro SDK支持的参数

以PS800-E1相机测试为主,测试项及其测试方法和结果如下表所示
在这里插入图片描述

4.2 设置示例

4.2.1_cameraSingle.SetTriggerMode

设置触发模式

int triggermode = (int) En_TRIGGER_MODE.TY_TRIGGER_MODE_SLAVE;
int set_trigger_mode = _cameraSingle.SetTriggerMode(ref triggermode);
if (set_trigger_mode != 0) 
{_cameraSingle.close();NativeMethods.deinitLib();_cameraSingle = null;throw new Exception("set trigger mode  failed, error code: " +set_trigger_mode);
}

如果设置成软触发工作模式,还需再start capture之后添加以下代码,发送软触发信号:

if(triggermode == (int) En_TRIGGER_MODE.TY_TRIGGER_MODE_SLAVE)
{
int sendsofttrigger = _cameraSingle.sendSoftTrigger();
if(sendsofttrigger != 0)
{_cameraSingle.close();NativeMethods.deinitLib();_cameraSingle = null;throw new Exception("send soft trigger  failed, error code: " +sendsofttrigger);}
}

4.2.2 _cameraSingle.SetRegistration

设置对齐模式

_cameraSingle.SetRegistration(0);

也可以直接在PercipioCameraToolBlock页面设置输入参数RegistrationMode,无需写代码。

4.2.3_cameraSingle.SetInt

int set_exp = _cameraSingle.SetInt((int)EnDeviceComponent.TY_COMPONENT_RGB_CAM,(int)En_FEATURE_ID.TY_INT_EXPOSURE_TIME,1088);
if(set_exp != 0)
{_cameraSingle.close();NativeMethods.deinitLib();_cameraSingle = null;throw new Exception("set exp failed, error code: " + set_exp);
}

4.2.4 _cameraSingle.GetInt

int exp = 0;
int get_exp = _cameraSingle.GetInt((int) EnDeviceComponent.TY_COMPONENT_RGB_CAM, (int) En_FEATURE_ID.TY_INT_EXPOSURE_TIME, ref exp);
if(get_exp != 0)
{_cameraSingle.close();NativeMethods.deinitLib();_cameraSingle = null;throw new Exception("get exp failed, error code: " + get_exp);
}
else
{//待补充
}

4.2.5 _cameraSingle.SetBool

int set_aec = _cameraSingle.SetBool((int)EnDeviceComponent.TY_COMPONENT_RGB_CAM,(int)En_FEATURE_ID.TY_BOOL_AUTO_EXPOSURE,false );
if(set_aec != 0)
{_cameraSingle.close();NativeMethods.deinitLib();_cameraSingle = null;throw new Exception("set aec failed, error code: " +set_aec);
}

4.2.6 _cameraSingle.GetBool

bool aec_status = true;
int get_aec = _cameraSingle.GetBool((int) EnDeviceComponent.TY_COMPONENT_RGB_CAM, (int) En_FEATURE_ID.TY_BOOL_AUTO_EXPOSURE, ref aec_status);
if(get_aec != 0)
{_cameraSingle.close();NativeMethods.deinitLib();_cameraSingle = null;throw new Exception("get_aec failed, error code: " + get_aec);
}

4.2.7 _cameraSingle.SetEnum

int resolution = CameraSingle.ImageMode(TY_PIXEL_FORMAT_LIST.TY_PIXEL_FORMAT_DEPTH16, TY_RESOLUTION_MODE_LIST.TY_RESOLUTION_MODE_1280x960);
int set_depth_resolution = _cameraSingle.SetEnum((int) EnDeviceComponent.TY_COMPONENT_DEPTH_CAM, (int) En_FEATURE_ID.TY_ENUM_IMAGE_MODE, resolution);
if(set_depth_resolution != 0)
{_cameraSingle.close();NativeMethods.deinitLib();_cameraSingle = null;throw new Exception("set depth resolution failed, error code: " +  set_depth_resolution); 
}

4.2.8 _cameraSingle.GetEnum

int resolution_value = 0;
int get_depth_resolution = _cameraSingle.GetEnum((int) EnDeviceComponent.TY_COMPONENT_DEPTH_CAM, (int) En_FEATURE_ID.TY_ENUM_IMAGE_MODE, ref resolution_value);
if(get_depth_resolution != 0)
{_cameraSingle.close();NativeMethods.deinitLib();_cameraSingle = null;throw new Exception("get depth resolution failed, error code: " + get_depth_resolution); 
}

4.2.9 _cameraSingle.SetFloat

int set_unit = _cameraSingle.SetFloat((int) EnDeviceComponent.TY_COMPONENT_DEPTH_CAM, (int) En_FEATURE_ID.TY_FLOAT_SCALE_UNIT, 5f);

4.2.10 _cameraSingle.GetFloat

float scale_unit= 0;
int get_unit = _cameraSingle.GetFloat((int) EnDeviceComponent.TY_COMPONENT_DEPTH_CAM, (int) En_FEATURE_ID.TY_FLOAT_SCALE_UNIT, ref scale_unit);

4.2.11 _cameraSingle.SetScaleUnit

float scaleUnit = 0.25f;
int ret = _cameraSingle.SetScaleUnit(scaleUnit);    
if(ret != 0)
{_cameraSingle.close();NativeMethods.deinitLib();_cameraSingle = null;throw new Exception("Set ScaleUnit Failure!");
}

可以直接在界面上输入,无需写代码。

4.2.12 _cameraSingle.GetScaleUnit

float get_scale = _cameraSingle.GetScaleUnit();

5.常见FAQ

1.每次运行只能采一张图,再次点击运行时会报错-1016。
2.使用图漾PercipioViewer软件保存的Png图片,是16位灰度图,可以使用Cog3DImageConvertTool这个Vtt文件,将16位灰度图转换成CogImage16Range,之后供VisionPro的3D工具应用。
3.图漾官网上下载的VisionPro的SDK,是旧的版本,建议使用链接上的V1.0.4版本的SDK。
4.切记使用图漾TOF相机,使用改插件,会有一些问题,有问题,请及时联系图漾技术。

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

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

相关文章

新版IDEA创建数据库表

这是老版本的IDEA创建数据库表,下面可以自己勾选Not null(非空),Auto inc(自增长),Unique(唯一标识)和Primary key(主键) 这是新版的IDEA创建数据库表,Not null和Auto inc可以看得到,但Unique和Primary key…

(非技术)从一公里到半程马拉松:我的一年跑步经历

在24年初,从来不运动的我,连跑步一公里都不能完成。而在一年之后的2025年的1月1日,我参加了上海的蒸蒸日上迎新跑,完成了半程马拉松。虽然速度不快,也并不是什么特别难完成的事情,但对我来说还是挺有意义的…

论“0是不存在的”

你看这又是一个悖论的例子。 你会说,既然你都写出来了“0”,咋还能说它不存在? 总是刷到谢尔顿说零不存在那个视频。可能有些小伙伴不解其意,为啥那小谢尔顿坚持说0不存在。我这说一个最简单的视角,怎么理解这句话。…

单路由及双路由端口映射指南

远程登录总会遇到登陆不上的情况,可能是访问的大门没有打开哦,下面我们来看看具体是怎么回事? 当软件远程访问时,主机需要两个条件,一是有一个唯一的公网IP地址(运营商提供),二是开…

Spring AI 在微服务中的应用:支持分布式 AI 推理

1. 引言 在现代企业中,微服务架构 已成为开发复杂系统的主流方式,而 AI 模型推理 也越来越多地被集成到业务流程中。如何在分布式微服务架构下高效地集成 Spring AI,使多个服务可以协同完成 AI 任务,并支持分布式 AI 推理&#x…

Kafak 单例生产者实现-C#操作

前面写了一篇入门操作的文章,因为工作需要,简单修改了下如何实现单例生产者。 Kafka入门-C#操作_c# kafka-CSDN博客文章浏览阅读1.6k次,点赞20次,收藏9次。2).报错:“kafka.zookeeper.ZooKeeperClientTimeoutException: Timed out waiting for connection while in state…

2024年记 | 凛冬将至

放弃幻想,准备斗争! 考研or就业? 上大学以来,考研上名校在我的心里一直是一颗种子,2024年初,当时的想法是考研和就业两手抓。买了张宇的高数现代,想要死磕! 也记了挺多笔记... 如果…

vue-有关于TS与路由器

title: vue(TS)路由器 date: 2025-01-28 12:00:00 tags:- 前端 categories:- 前端Vue3-第二部分 这里是代码中出现TS的,后面是路由器 现在先上代码,步步分析。 eg1-props的使用 步步分析代码(先理解,再实践) 框架…

mysql.sock.lock 导致mysql重启失败

背景 今天公司物业断电,导致机房服务器停电宕机,所有的服务都得重启。本着mysql实例都做了服务自启动,所以没有太担心影响开发的日常工作。但是今天一上班开发就找来,各种服务都没起来有问题,数据库连不上。马上登陆数…

【hot100】刷题记录(7)-除自身数组以外的乘积

题目描述: 给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#x…

1-2 飞机大战游戏场景

前言: 根据前面的项目框架,搭建游戏的运行场景...... 1.0 框架预览 基于该框架首先实现游戏的运行场景 2.0 图片文件 创建图片文件,本次项目使用easyx作为图形库文件,在easyx中想要显示图片,需要有一张图片和图片的掩码…

进程通讯——类型和发展

进程常用交互方法如上

安装zsh并美化

0 Zsh 是一种功能强大的 shell,通常用于替代默认的 Bash shell。它为命令行提供了更多的功能,例如自动补全、强大的模式匹配和主题支持等。 Oh My Zsh 是用于管理 Zsh 配置的框架。 powerlevel10k是样式,通过p10k configure脚本可以调节自己…

GMSL 明星产品之 MAX96717

在上一篇文章中,我们详细介绍了车载市场中爆火的 GMSL 到底是个啥 : 揭开 GMSL 的面纱:自动驾驶背后的隐藏技术。今天我们就来详细了解下如今在摄像头侧超级火爆的加串器:MAX96717。 MAX96717 系列有三款产品: MAX967…

线段树 算法

文章目录 基础知识适用场景小结 题目概述题目详解300.最长递增子序列2407.最长递增子序列 II 基础知识 线段树和树状数组都只是一个工具来的,题目并不会一下子就告诉你这个题目用到线段树和树状数组,这个取决于你想使用的数据结构以及所要优化的方向 线…

MATLAB提供的颜色映射表colormap——伪彩色

图像处理领域的一个习惯:不是真实的颜色,一般用伪彩色。一是说明不是物体本身的颜色,二是彩色更容易分辨。 MATLAB陆续提供了16种颜色映射表colormap。 之前的都很丑,近5年新增的4种还可以。总的说来还是丑。 这是一种鸟的名字。…

20.Word:小谢-病毒知识的科普文章❗【38】

目录 题目​ NO1.2.3文档格式 NO4.5 NO6.7目录/图表目录/书目 NO8.9.10 NO11索引 NO12.13.14 每一步操作完,确定之后记得保存最后所有操作完记得再次删除空行 题目 NO1.2.3文档格式 样式的应用 选中应用段落段落→开始→选择→→检查→应用一个一个应用ctr…

【16届蓝桥杯寒假刷题营】第2期DAY4

【16届蓝桥杯寒假刷题营】第2期DAY4 - 蓝桥云课 问题描述 幼儿园小班的浩楠同学有一个序列 a。 他想知道有多少个整数三元组 (i,j,k) 满足 1≤i,j,k≤n 且 ai​aj​ak​。 输入格式 共2行,第一行一个整数 n,表示序列的长度。 第二行 n 个整数&#x…

MySQL查询优化(三):深度解读 MySQL客户端和服务端协议

如果需要从 MySQL 服务端获得很高的性能,最佳的方式就是花时间研究 MySQL 优化和执行查询的机制。一旦理解了这些,大部分的查询优化是有据可循的,从而使得整个查询优化的过程更有逻辑性。下图展示了 MySQL 执行查询的过程: 客户端…

Van-Nav:新年,将自己学习的项目地址统一整理搭建自己的私人导航站,供自己后续查阅使用,做技术的同学应该都有一个自己网站的梦想

嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法 Van-Nav是一个基于Vue.js开发的导航组件库,它提供了多种预设的样式和灵活的配置选项,使得开发者可以轻松地定制出符合项目需求…