文章目录

  • 一、在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. 转载:用 Tomcat 和 Eclipse 开发 Web 应用程序
  2. php var_dump()函数的详解
  3. 在ubuntu 中如何保存及播放DVD
  4. python 字符编码判断 chardet评测
  5. js面向对象开发互联网机顶盒应用头端之二
  6. unity vr 交互_基于手动的VR / MR交互,用于删除实体
  7. 计算机四级考试题数据库,计算机四级考试《数据库系统工程师》试题及答案
  8. c mysql命令_最基本的mysql命令
  9. 原生JS实现各种经典网页特效——Banner图滚动、选项卡切换、广告弹窗等
  10. dbflow 批量 增删查改
  11. http请求下载文件
  12. 如何批量删除 Word 文档的只读密码?
  13. java用jaxb三步解析xml_三步解决JAXB生成XML包含CDATA问题
  14. 手动查毒删除病毒文件图
  15. echarts关系图(force图)
  16. 【Encoder-Decoder】
  17. Python:6-1 水仙数的统计1 (4分)
  18. 电商类-仿美团页面demo
  19. 宇视网络视频录像机通道名称如何设置
  20. 多元线性回归方程原理及其推导

热门文章

  1. Spice与SpiceyPy介绍
  2. 在组策略的首选项和策略设置之间进行选择
  3. 【强烈推荐】Java主函数入口,此篇文章极短极细,慎入
  4. Android SimpleAdapter源码详解
  5. Android蓝牙连接a2dp蓝牙耳机
  6. 查询关键字MySQL学习笔记16:子查询 查询关键字
  7. 【Windows】局域网内共享文件夹的设置方法
  8. SDWebImage的坑,无网络时加载图片失败,有网络后依然无法加载显示的问题
  9. mysql导入dcom配置_Excel部署配置DCOM
  10. 达梦查询一周内,一月内,一年内的数据