当前位置: 首页 > news >正文

c#visionpro开发 方法统计

toolblock开发
vpp第二种简单加载方式
public Cognex.VisionPro.ToolBlock.CogToolBlock ToolBlock1;//初始化后实例化一个方法

//窗口运行程序内部
ToolBlock1 = (CogToolBlock)CogSerializer.LoadObjectFromFile(“tjjc.vpp”);
MessageBox.Show(“算法加载成功”);//复制一个vpp到程序内部 并将属性选择为始终复制。
第一步引用
引用
using System.Net.Sockets;
using System.Net;
using System.Threading;
using Cognex.VisionPro.ToolBlock;
using Cognex.VisionPro.ImageFile;
using Cognex.VisionPro;
using System.IO;
第二步
在初始化步骤之后
public string VppPath = System.Windows.Forms.Application.StartupPath;//读取软件启动地址 自动读取文件在盘中的位置
实例化一个工具
Public static Cognex.VisionPro.ToolBlock.CogToolBlock ToolBlock1 = new Cognex.VisionPro.ToolBlock.CogToolBlock();//实例化toolblock工具
vpp名称
string CogToolBlock1Name = “CogToolBlock1.vpp”;//创建一个字符串vpp名称备用
实例化所需要的工具 例如 相机
public CogImageFileTool gImageFileTool = new CogImageFileTool();//实例化图片打开
public static Cognex.VisionPro.CogAcqFifoTool CamTool1 = new CogAcqFifoTool();//实例化相机工具
string CamtoolName1 = “cogAcqFifoTool1.vpp”;
string SaveImagesPath = “D:\SaveImages\CAM1”;
获取时间
DateTime now = DateTime.Now;now变量存储当前时间 使用方式
yyymmmdddsss;

第三步
private void Form1_Load(object sender, EventArgs e)//创建一个任务
Try 试着去运行一段程序
{
textBox1.Text = iniFile.IniReadValue(“设置”, “IP地址”, ConfigPath + “设置.ini”);
textBox2.Text = iniFile.IniReadValue(“设置”, “端口号”, ConfigPath + “设置.ini”);
comboBox1.Text = iniFile.IniReadValue(“设置”, “类型”, ConfigPath + “设置.ini”);
Pixlength.Text = iniFile.IniReadValue(“设置”, “像素当量”, ConfigPath + “设置.ini”);
InitialX.Text = iniFile.IniReadValue(“设置”, “机械手初始位置X”, ConfigPath + “设置.ini”);
InitialY.Text = iniFile.IniReadValue(“设置”, “机械手初始位置Y”, ConfigPath + “设置.ini”);

            //SP.showLoadMessage("正在算法程序!");string fileName1 = VppPath + "\\IVS\\" + CogToolBlock1Name;

ToolBlock1 = (Cognex.VisionPro.ToolBlock.CogToolBlock)(CogSerializer.LoadObjectFromFile(fileName1)); ToolBlock1=(Cognex.VisionPro.ToolBlock.CogToolBlock)(CogSerializer.LoadObjectFromFile(fileName1));//加载路径把VPP给toolblock1
this.cogToolBlockEditV21.Subject = ToolBlock1;//把toolblock给界面的工具

string fileNameCam1 = VppPath + “\IVS\” + CamtoolName1;
CamTool1=(Cognex.VisionPro.CogAcqFifoTool)(CogSerializer.LoadObjectFromFile(fileNameCam1));//加载路径把相机设置给CamTool1
cogAcqFifoEditV21.Subject = CamTool1;
listboxmessage(“算法加载成功”, Brushes.Green);
listboxmessage(“相机加载成功”, Brushes.Green);
}
catch (Exception ex)
{
listboxmessage(“算法加载失败”, Brushes.Red);
listboxmessage(“相机加载失败”, Brushes.Red);
}
加载工作完成;
进入下一步;
触发运行阶段;
this.openFileDialog1.FileName = “”;
openFileDialog1.Filter = “Image Files(.BMP;.JPEG;.TIF;.PNG)|.BMP;.JPEG;.TIF;.PNG”;

            openFileDialog1.ShowDialog();string strFileName = openFileDialog1.FileName;Bitmap BitmapAR = (Bitmap)Image.FromFile(strFileName);Bitmap Bitmap;Bitmap = (Bitmap)Image.FromFile(strFileName);CogImage24PlanarColor cogImage24PlanarColor = new CogImage24PlanarColor((Bitmap)Bitmap);//彩色图像//CogImage8Grey cogImage8Gray = new CogImage8Grey((Bitmap)Bitmap);//黑白图像//iCogImage = (ICogImage)cogImage8Gray;

实例化图像格式;

下一步;如果收到触发信号 取图工具准备 运行 加载图像到toolblock 运行。
if (strFileName != “”)
{
gImageFileTool.Operator.Open(strFileName, CogImageFileModeConstants.Read);
gImageFileTool.Run();
//cogRecordDisplay1.Image = cogImage8Gray;
ToolBlock1.Inputs[0].Value = gImageFileTool.OutputImage as Cognex.VisionPro.CogImage24PlanarColor;//把加载后的图像给toolblock的图像输入
ToolBlock1.Run();

            }

另一种运行方式

string imageName = “CAM1.bmp”;
SaveSouceImage(SaveImagesPath, imageName, CamTool1.OutputImage);//保存图像到那个位置
//display.AddTextOnImage(display.cogRecordDisplay1, “OK”, 300, 300, CogColorConstants.Green, 70, false);
ToolBlock1.Inputs[0].Value = CamTool1.OutputImage as Cognex.VisionPro.CogImage24PlanarColor;//此处为黑白图像输入图像为取图工具输出图像
ToolBlock1.Run();//运行
cogRecordDisplay1.Image = null;//运行前清除画面
cogRecordDisplay1.StaticGraphics.Clear();
cogRecordDisplay1.InteractiveGraphics.Clear();//运行前清除画面
cogRecordDisplay1.Record = ToolBlock1.CreateLastRunRecord().SubRecords[3];//处理后图像显示
cogRecordDisplay1.Fit();//自适应
string Xpix = ToolBlock1.Outputs[0].Value.ToString();//结果获取
string Ypix = ToolBlock1.Outputs[1].Value.ToString();//结果获取
double count = Convert.ToDouble(ToolBlock1.Outputs[2].Value);//结果获取
string X1pix = ToolBlock1.Outputs[3].Value.ToString();//结果获取
string Y1pix = ToolBlock1.Outputs[4].Value.ToString();//结果获取
string X2pix = ToolBlock1.Outputs[5].Value.ToString();//结果获取
string Y2pix = ToolBlock1.Outputs[6].Value.ToString();//结果获取
运行完成;

跨窗体调用参数
public Form2(Form1 mform1)
{
InitializeComponent();

        mform = mform1;}Form1 mform = null;

读取复选框中的数据
if (comboBox1.SelectedItem.ToString()“管理员”&& textBox3.Text"123456")
{
button6.Enabled = true;
}
else if (comboBox1.SelectedItem.ToString() == “工程师” && textBox3.Text == “123456”)
{
button6.Enabled = true;
button7.Enabled = true;//按钮=true可以选择
}

调用窗体程序
Form2 f = new Form2(this);

        f.ShowDialog();//打开新窗体

private void button9_Click(object sender, EventArgs e)//占用主线程示例
{
Thread.Sleep(3000);
MessageBox.Show(“第一步完成”);
Thread.Sleep(5000);
MessageBox.Show(“第二步完成”);
}

    private void button10_Click(object sender, EventArgs e)//thread开线程示例{Thread t = new Thread(()=> {Thread.Sleep(3000);MessageBox.Show("第一步完成");Thread.Sleep(5000);MessageBox.Show("第二步完成");});t.Start();}private void button11_Click(object sender, EventArgs e)//task开线程示例(常用){Task.Run(()=>{Thread.Sleep(3000);MessageBox.Show("第三步完成");Thread.Sleep(5000);MessageBox.Show("第四步完成");});

多线程同时运行 如何一步一步运行;
(添加async属性)(await等待运行)
private async void button12_Click(object sender, EventArgs e)
{
await Task.Run(() =>
{
Thread.Sleep(3000);
MessageBox.Show(“第三步完成”);
});
await Task.Run(() =>
{
Thread.Sleep(5000);
MessageBox.Show(“第四步完成”);
});
MessageBox.Show(“全部完成”);
}

特殊开线程的一种方法timer
using System.Threading;//引用一个类
public System.Threading.Timer timer2;//实例化一个timer
timer2 = new System.Threading.Timer(t, null, 1000, 1000);//定义一个timer数据。T 方法 null这个值可以为空 1000第一次运行的时间 1000往后每次的时间。
private void t (object obj)
{
this.Invoke(new Action(() =>//委托 跨线程访问。
//程序运行区域;
}
手动timer暂停的方法
Timer.change(Timeout.Infinite,Timeout.Infinite)
重新启动的方法
Timer.change(0,1000);//恢复计时器

弹窗确认后继续运行的方法
DialogResult result = MessageBox.Show(“是否确认继续运行程序?”, “提示”, MessageBoxButtons.YesNo);

    if (result == DialogResult.Yes){// 用户选择确认,继续运行程序Console.WriteLine("程序继续运行...");}else{// 用户选择取消,不继续运行程序Console.WriteLine("程序停止运行...");return;}

相关文章:

c#visionpro开发 方法统计

toolblock开发 vpp第二种简单加载方式 public Cognex.VisionPro.ToolBlock.CogToolBlock ToolBlock1;//初始化后实例化一个方法 //窗口运行程序内部 ToolBlock1 (CogToolBlock)CogSerializer.LoadObjectFromFile(“tjjc.vpp”); MessageBox.Show(“算法加载成功”);//复制一个…...

dedecms——四种webshell姿势

姿势一:通过文件管理器上传WebShell 步骤一:访问目标靶场其思路为 dedecms 后台可以直接上传任意文件,可以通过文件管理器上传php文件获取webshell 步骤二:登陆到后台点击【核心】--》 【文件式管理器】--》 【文件上传】将准备好…...

GO GIN 推荐的库

在使用 Go 和 Gin 框架进行 Web 开发时,有许多第三方库可以增强功能和提高开发效率。以下是一些常用的、与 Gin 搭配使用的库: 1. 数据处理与验证 go-playground/validator 用于结构体字段的验证,Gin 默认已经集成了它。它提供了丰富的验证…...

YOLOv9改进策略【卷积层】| GnConv:一种通过门控卷积和递归设计来实现高效、可扩展、平移等变的高阶空间交互操作

一、本文介绍 本文记录的是利用GnConv优化YOLOv9的目标检测方法研究。YOLOv9在进行目标检测时,需要对不同层次的特征进行融合。GnConv可以考虑更高阶的空间交互,能够更好地捕捉特征之间的复杂关系,从而增强特征融合的效果,提高模…...

如何在Linux下升级R版本和RStudio

一、升级R版本 在Linux上,R的安装通常通过包管理器完成。不同的Linux发行版(如Ubuntu、Debian、Fedora等)可能略有不同。下面以Ubuntu为例,介绍如何升级R版本。如果你使用其他发行版,步骤可能类似。 二.更新步骤 2.…...

npm安装时候报错certificate has expired

打开了一个很久没用的电脑,npm和node都装好了,安装包的时候一直报错 request to https://registry.npm.taobao.org/create-react-app failed, reason: certificate has expired而且先报错rollbackFailedOptional 然而npm没什么问题,是ssl过…...

CSP-J_S第一轮复习资料1·计算机硬件

下一章...

oracle 表的外键

表的外键 3.5.1表之间的三种关系 在数据库设计中,工作中经常会分析商业逻辑中的表的设计。在设计表的关系之前,需要先了解关系型数据库特点。关系数据库有如下特点: 关系型数据库采用了关系模型来组织数据的数据库。 关系型数据库的最大特点…...

加密与安全_优雅存储二要素(AES-256-GCM )

文章目录 什么是二要素如何保护二要素(姓名和身份证)加密算法分类场景选择算法选择AES - ECB 模式 (不推荐)AES - CBC 模式 (推荐)GCM(Galois/Counter Mode)AES-256-GCM简介AES-256-GCM工作原理安全优势 应用场景其他模式 和 敏感…...

【C++高阶】解锁C++的深层魅力——探索特殊类的奥秘

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C “ 登神长阶 ” 🤡往期回顾🤡:C 类型转换 🌹🌹期待您的关注 🌹🌹 ❀C特殊类 📒1. 不能被拷贝…...

Vue学习记录之三(ref全家桶)

ref、reactive是在 setup() 声明组件内部状态用的&#xff0c; 这些变量通常都要 return 出去&#xff0c;除了供 < template > 或渲染函数渲染视图&#xff0c;也可以作为 props 或 emit 参数 在组件间传递。它们的值变更可触发页面渲染。 ref &#xff1a;是一个函数&…...

第二十六篇——九地篇:九种形势的应对之道

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么&#xff1f; 四、总结五、升华 一、背景介绍 地势的维度重新阐述了懂得人心的重要性&#xff0c;道久其归一为为别人。…...

学习记录:js算法(三十七): 搜索二维矩阵

文章目录 搜索二维矩阵我的思路网上思路 总结 搜索二维矩阵 给你一个满足下述两条属性的 m x n 整数矩阵&#xff1a; ● 每行中的整数从左到右按非严格递增顺序排列。 ● 每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target &#xff0c;如果 target 在矩阵中&a…...

拥控算法BBR入门1

拥塞控制算法只与本地有关 一个TCP会话使用的拥塞控制算法只与本地有关。 两个TCP系统可以在TCP会话的两端使用不同的拥塞控制算法 Bottleneck Bandwidth and Round-trip time Bottleneck 瓶颈 BBR models the network to send as fast as the available bandwidth and is 2…...

[Python数据可视化]Plotly Express: 地图数据可视化的魅力

在数据分析和可视化的世界中&#xff0c;地图数据可视化是一个强大而直观的工具&#xff0c;它可以帮助我们更好地理解和解释地理数据。Python 的 Plotly Express 库提供了一个简单而强大的方式来创建各种地图。本文将通过一个简单的示例&#xff0c;展示如何使用 Plotly Expre…...

windows C++ 并行编程-PPL 中的取消操作(四)

并行模式库 (PPL) 中取消操作的角色、如何取消并行工作以及如何确定取消并行工作的时间。 运行时使用异常处理实现取消操作。 请勿在代码中捕捉或处理这些异常。 此外&#xff0c;还建议你在任务的函数体中编写异常安全的代码。 例如&#xff0c;可以使用获取资源即初始化 (RA…...

【数据结构】字符串与JSON字符串、JSON字符串及相应数据结构(如对象与数组)之间的相互转换

前言&#xff1a; 下面打印日志用的是FastJSON依赖库中的 Log4j2。依赖&#xff1a; <!-- Alibaba Fastjson --> <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.80</version> …...

LeetcodeTop100 刷题总结(一)

LeetCode 热题 100&#xff1a;https://leetcode.cn/studyplan/top-100-liked/ 文章目录 一、哈希1. 两数之和49. 字母异位词分组128. 最长连续序列 二、双指针283. 移动零11. 盛水最多的容器15. 三数之和42. 接雨水&#xff08;待完成&#xff09; 三、滑动窗口3. 无重复字符的…...

Next-ViT: 下一代视觉Transformer,用于现实工业场景中的高效部署

摘要 由于复杂的注意力机制和模型设计&#xff0c;大多数现有的视觉Transformer&#xff08;ViTs&#xff09;在实际的工业部署场景中&#xff0c;如TensorRT和CoreML&#xff0c;无法像卷积神经网络&#xff08;CNNs&#xff09;那样高效运行。这提出了一个明显的挑战&#x…...

C++知识点示例代码助记

C语言设计期末知识点附示例代码。 1. 基础语法 变量和数据类型&#xff1a; int a 10; // 整型 float b 5.25f; // 单精度浮点型 double c 5.25; // 双精度浮点型 char d A; // 字符型 bool e true; // 布尔型 const int PI 3.14; // 常量输入输出&…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言&#xff1a; 最近在做行为检测相关的模型&#xff0c;用的是时空图卷积网络&#xff08;STGCN&#xff09;&#xff0c;但原有kinetic-400数据集数据质量较低&#xff0c;需要进行细粒度的标注&#xff0c;同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...