VisionPro + C#:联合c#进行简易二次开发
文章目录前言一、在Visual Studio的工具箱中加入VisionPro的控件二、使用VisionPro的控件进行二次开发1.准备事项2.代码编写1、添加引用总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、在Visual St
文章共2,398字 · 阅读需要大约8分钟
一键AI生成摘要,助你高效阅读
问答
·
文章目录
一、在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 VisionPro
public 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位运行)
更多推荐
已为社区贡献1条内容
所有评论(0)