文章目录

  • 一、在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#进行简易二次开发相关推荐

  1. 基于Python的Solidworks二次开发方法

    关于python简易二次开发Solidworks的小程序 第一次动手开发了一个Solidworks的小程序,实验的功能也很简单,出来分享一下,第一次大佬们也可以指出一些问题,来帮助我改进~ 此处特别感 ...

  2. H5案例分享:jquery.qrcode.js生成简易二维码

    近期做项目需要生成二维码,并且解码获取信息,jquery.qrcode.js生成二维码比较的方便,写个教程分享给大家.欢迎大家测试留言,我会改进代码. 现在二维码越来越流行啦,支付扫二维码,关注扫二维 ...

  3. VisionPro二次开发——C#计算旋转中心

    本文将通过Visual Studio 2019运行VisionPro软件计算旋转中心,可用于旋转标定. 目录 前期准备 程序框架 引用内容 窗体设计 程序设计 运行结果 前期准备 首次在Visual ...

  4. OCR二次开发宝典:飞桨联合多家企业和高校发布《OCR产业范例20讲》

    文字识别(Optical Character Recognition,OCR)作为AI领域发展较成熟的一种技术方向,已经在各种产业场景得到落地应用.除了文档电子化.卡证识别等典型的应用场景,还存在大量 ...

  5. 运用C#在VS2017的PictureBox控件中绘制简易二自由度机械臂,并且让机械臂实现画直线、圆、人物轮廓及写字的功能。

    运用C#在VS2017的PictureBox控件中绘制简易二自由度机械臂,并且让机械臂实现画直线.圆.人物轮廓及写字的功能. 给大家看看效果吧 演示写字视频在下: VID 首先放置了诸多控件 在给控件 ...

  6. 模拟简易二维码的形成

    bian二维码,也叫QR码,英语是Quick Response Code,于1994年由日本的DENSO WAVE公司发明.二维码现在已经深入人们生活的方方面面,在网上的二维码生成器(如草料二维码)中 ...

  7. PT@多维随机变量@联合分布函数@联合分布律@边缘分布律@二维离散型随机变量和分布律

    文章目录 PT@多维随机变量@联合分布函数@联合分布律@边缘分布律@二维离散型随机变量和分布律 多维随机变量

  8. python二次开发攻略-ABAQUS Python二次开发攻略

    第一部分 引言 第1章 Abaqus二次开发简介 12 1.1 为什么是Python 12 1.2 Python.FORTRAN与Abaqus 13 1.3 基于Python二次开发 14 第2章 P ...

  9. 一文读懂TOF深度相机技术原理--TI-Tintin-OPT8241二次开发和应用系列--Theory Level

    一文读懂TOF深度相机技术原理--TI-Tintin-OPT8241二次开发和应用系列--Theory Level 转载请附上出处,本文链接:https://www.cnblogs.com/pans0 ...

最新文章

  1. mysql update时数据不存在新增_mysql sql语句新增判断,存在修改,不存在新增
  2. noj数据结构稀疏矩阵的加法十字链表_数据结构学习(C )稀疏矩阵(十字链表1)
  3. 【C 语言】文件操作 ( 文件加密解密 | 加密解密原理 | 对称加密原理 | 非密钥整数倍长度的数据加密处理 )
  4. ES中搜索结果各属性说明介绍,以及搜索中的timeout机制讲解(来自学习资料,34节)
  5. java api操作hbase_通过JavaAPI使用HBase
  6. jupyter可以打开HTML文件吗,Jupyter ~ 像写文章般的 Coding (附:同一个ipynb文件,执行多语言代码)...
  7. [树状数组][哈希]JZOJ 3240 Seat
  8. 20200802:力扣200周周赛题解
  9. Java21天打卡day18--继承
  10. Linux基本操作笔记
  11. 数值计算方法”上机实验指导书——实验一 误差分析
  12. 牛客NC272 栈的压入、弹出序列
  13. Win11WSA无法启动的解决办法
  14. 前端谷歌浏览器基本介绍及前后端分离原理分析
  15. Ui设计中常用的6大工具
  16. Python数据库篇
  17. 笔记本连接双显示屏相关问题
  18. 海盗王客户端断线自动重连的解决方案
  19. Django REST framework+Vue 打造生鲜超市(四)
  20. CAM350 常用快捷键及简单操作问题

热门文章

  1. java主函数的含义
  2. 人人宝:应该依靠健康保险治疗精神疾病吗?
  3. Linux音乐播放器 推荐
  4. win10自带应用图标显示感叹号无法打开如何解决(详细版)
  5. [USDA]查询食物热量和微量元素
  6. Python 通过变量ID 得到变量的值
  7. Shopee店铺开设步骤
  8. 如何设计一个远程桌面程序
  9. java时间复杂度计算_时间复杂度到底怎么算
  10. 学生成绩查询系统需求规格说明书