VisionPro + C#:联合c#进行简易二次开发
文章目录
- 一、在Visual Studio的工具箱中加入VisionPro的控件
- 二、使用VisionPro的控件进行二次开发
- 1.准备事项
- 2.代码编写
- 1、添加引用
- 2、代码
- 三、展示
- 四、可能出现的问题
- 1、加载的vpp的类型不一致
- 2、平台运行时32位(加载Vpp是需要平台位64位运行)
一、在Visual Studio的工具箱中加入VisionPro的控件
这部分直接参考:https://blog.csdn.net/qq_41375318/article/details/103600406
加入完成后,如下图:
二、使用VisionPro的控件进行二次开发
1.准备事项
VisionPro:CogToolBlock工具的VPP(一般开发中使用的都是CogToolBlock工具的VPP,需要运行的过程在CogToolBlock中做好,然后保存)
注意:我这里可以连接并使用相机,不能用的可以使用CogImageFileTool工具
Form窗体:二次开发一般只需显示运行结果图片,我使用的是CogRecordDisplay
2.代码编写
1、添加引用
当你向窗体加入CogRecordDisplay控件时,会自动引用一部分,但仍需要自己添加所需的引用
2、代码
视觉系统使用VisionPro的大概步骤
//1、加载VPP
CogToolBlock cogToolBlock = (CogToolBlock)CogSerializer.LoadObjectFromFile("...\\VPP\\IDRead.vpp");
//2、运行VPP
cogToolBlock.Run();
//3、获取VPP中的工具(CogIDTool1)
CogIDTool cogIDTool = (CogIDTool)cogToolBlock.Tools["CogIDTool1"];
//4、获取CogIDTool1里面LastRunRecord的第一项(也就是需要在窗体显示的图片)
cogRecordDisplay1.Record = cogIDTool.CreateLastRunRecord().SubRecords[0];
//是否图片自fill于cogRecordDisplay1
cogRecordDisplay1.Fit(true);//需要某些工具中的数据,单独拿出来,类似于VisionPro的脚步
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Cognex.VisionPro;
using Cognex.VisionPro.ID;
using Cognex.VisionPro.ToolBlock;namespace IDRead
{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){LoadVPP();}private void button1_Click(object sender, EventArgs e){RunOnceJob();SaveImg(cogRecordDisplay1,"D:\\images\\");//保存图片}#region VisionPropublic CogToolBlock cogToolBlock;public string path = Application.StartupPath + @"\\VPP\\IDRead.vpp";/// <summary>/// 加载vpp/// </summary>public void LoadVPP(){if (File.Exists(path)){cogToolBlock = (CogToolBlock)CogSerializer.LoadObjectFromFile(path);}}/// <summary>/// 单次运行Job/// </summary>public void RunOnceJob(){cogToolBlock.Run();CogIDTool cogIDTool = (CogIDTool)cogToolBlock.Tools["CogIDTool1"];//获取组里面LastRunRecord的第一项cogRecordDisplay1.Record = cogIDTool.CreateLastRunRecord().SubRecords[0];// cogToolBlock.CreateLastRunRecord().SubRecords[0];cogRecordDisplay1.Fit(true);}#endregion/// <summary>/// 窗体关闭前/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void Form1_FormClosing(object sender, FormClosingEventArgs e){//释放资源(使用了相机)CogFrameGrabbers frameGrabbers = new CogFrameGrabbers();foreach (ICogFrameGrabber fg in frameGrabbers)fg.Disconnect(false);}/// <summary>/// 保存图像/// </summary>/// <param name="cogRecordDisplay">vision pro 显示窗体</param>/// <param name="path">图片存入路径</param>private void SaveImg(CogRecordDisplay cogRecordDisplay, string path){if (cogRecordDisplay.Image == null) //判断是否有图片return;if (!Directory.Exists(path)) //如果没有同名文件夹,就创建一个文件夹{Directory.CreateDirectory(path);}//保存图片至文件(24位位图)Image image = default(Image);image = cogRecordDisplay.CreateContentBitmap(Cognex.VisionPro.Display.CogDisplayContentBitmapConstants.Image, null, 0);image.Save(path + DateTime.Now.ToString("yyyyMMddhhmmssff") + ".bmp", ImageFormat.Bmp); //路径、时间、格式}}//保存vpp//CogSerializer.SaveObjectToFile(cogToolBlockEditV21.Subject, "path");}
三、展示
四、可能出现的问题
1、加载的vpp的类型不一致
2、平台运行时32位(加载Vpp是需要平台位64位运行)
VisionPro + C#:联合c#进行简易二次开发相关推荐
- 基于Python的Solidworks二次开发方法
关于python简易二次开发Solidworks的小程序 第一次动手开发了一个Solidworks的小程序,实验的功能也很简单,出来分享一下,第一次大佬们也可以指出一些问题,来帮助我改进~ 此处特别感 ...
- H5案例分享:jquery.qrcode.js生成简易二维码
近期做项目需要生成二维码,并且解码获取信息,jquery.qrcode.js生成二维码比较的方便,写个教程分享给大家.欢迎大家测试留言,我会改进代码. 现在二维码越来越流行啦,支付扫二维码,关注扫二维 ...
- VisionPro二次开发——C#计算旋转中心
本文将通过Visual Studio 2019运行VisionPro软件计算旋转中心,可用于旋转标定. 目录 前期准备 程序框架 引用内容 窗体设计 程序设计 运行结果 前期准备 首次在Visual ...
- OCR二次开发宝典:飞桨联合多家企业和高校发布《OCR产业范例20讲》
文字识别(Optical Character Recognition,OCR)作为AI领域发展较成熟的一种技术方向,已经在各种产业场景得到落地应用.除了文档电子化.卡证识别等典型的应用场景,还存在大量 ...
- 运用C#在VS2017的PictureBox控件中绘制简易二自由度机械臂,并且让机械臂实现画直线、圆、人物轮廓及写字的功能。
运用C#在VS2017的PictureBox控件中绘制简易二自由度机械臂,并且让机械臂实现画直线.圆.人物轮廓及写字的功能. 给大家看看效果吧 演示写字视频在下: VID 首先放置了诸多控件 在给控件 ...
- 模拟简易二维码的形成
bian二维码,也叫QR码,英语是Quick Response Code,于1994年由日本的DENSO WAVE公司发明.二维码现在已经深入人们生活的方方面面,在网上的二维码生成器(如草料二维码)中 ...
- PT@多维随机变量@联合分布函数@联合分布律@边缘分布律@二维离散型随机变量和分布律
文章目录 PT@多维随机变量@联合分布函数@联合分布律@边缘分布律@二维离散型随机变量和分布律 多维随机变量
- python二次开发攻略-ABAQUS Python二次开发攻略
第一部分 引言 第1章 Abaqus二次开发简介 12 1.1 为什么是Python 12 1.2 Python.FORTRAN与Abaqus 13 1.3 基于Python二次开发 14 第2章 P ...
- 一文读懂TOF深度相机技术原理--TI-Tintin-OPT8241二次开发和应用系列--Theory Level
一文读懂TOF深度相机技术原理--TI-Tintin-OPT8241二次开发和应用系列--Theory Level 转载请附上出处,本文链接:https://www.cnblogs.com/pans0 ...
最新文章
- mysql update时数据不存在新增_mysql sql语句新增判断,存在修改,不存在新增
- noj数据结构稀疏矩阵的加法十字链表_数据结构学习(C )稀疏矩阵(十字链表1)
- 【C 语言】文件操作 ( 文件加密解密 | 加密解密原理 | 对称加密原理 | 非密钥整数倍长度的数据加密处理 )
- ES中搜索结果各属性说明介绍,以及搜索中的timeout机制讲解(来自学习资料,34节)
- java api操作hbase_通过JavaAPI使用HBase
- jupyter可以打开HTML文件吗,Jupyter ~ 像写文章般的 Coding (附:同一个ipynb文件,执行多语言代码)...
- [树状数组][哈希]JZOJ 3240 Seat
- 20200802:力扣200周周赛题解
- Java21天打卡day18--继承
- Linux基本操作笔记
- 数值计算方法”上机实验指导书——实验一 误差分析
- 牛客NC272 栈的压入、弹出序列
- Win11WSA无法启动的解决办法
- 前端谷歌浏览器基本介绍及前后端分离原理分析
- Ui设计中常用的6大工具
- Python数据库篇
- 笔记本连接双显示屏相关问题
- 海盗王客户端断线自动重连的解决方案
- Django REST framework+Vue 打造生鲜超市(四)
- CAM350 常用快捷键及简单操作问题