C#+VisionPro获取Blob的测量数据

复制代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Cognex.VisionPro;
using Cognex.VisionPro.Blob;
using Cognex.VisionPro.Caliper;
using Cognex.VisionPro.Interop;
using Cognex.VisionPro.QuickBuild;
using Cognex.VisionPro.ToolGroup;
using CogGraphicLabel = Cognex.VisionPro.CogGraphicLabel;

namespace VPPDemo2
{
    public partial class Form1 : Form
    {
        private string VppPath = @"C:\Users\Administrator\Desktop\QuickBuild2.vpp";
        private CogJobManager myjobmanger;
        private CogToolGroup cogToolGroup;
        //private CogFindCircleTool cogFindCircleTool;
        //private CogFindLineTool cogFindLineTool;
        private CogBlobTool cogBlobTool;

        public Form1()
        {
            InitializeComponent();
        }

        /// <summary>
        /// 加载VPP
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            myjobmanger = (CogJobManager)CogSerializer.LoadObjectFromFile(VppPath);
            cogToolGroup = (CogToolGroup)myjobmanger.Job(0).VisionTool;
            //cogFindCircleTool = (CogFindCircleTool)cogToolGroup.Tools[3];
            //cogFindLineTool=(CogFindLineTool)cogToolGroup.Tools[4];
            cogBlobTool = (CogBlobTool)cogToolGroup.Tools[2];
            MessageBox.Show("加载VPP成功.");
        }

        /// <summary>
        /// 运行
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button2_Click(object sender, EventArgs e)
        {
            //cogFindCircleTool.RunParams.NumCalipers = 10;
            //cogFindCircleTool.Run();
            cogBlobTool.Run();
            cogToolGroup.Run();
            MessageBox.Show("运行成功.");
        }

        /// <summary>
        /// 获取结果
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button3_Click(object sender, EventArgs e)
        {
            //创建文本
            CogGraphicLabel ResultLabel = new CogGraphicLabel();//创建标签对象
            ResultLabel.X = 10;
            ResultLabel.Y = -50;
            ResultLabel.Text = "Label Test,添加文本测试";
            ResultLabel.Color = Cognex.VisionPro.CogColorConstants.Red;
            ResultLabel.Font = new Font("arial",8);
            //创建矩形
            Cognex.VisionPro.CogRectangle cogRectangle = new Cognex.VisionPro.CogRectangle();
            cogRectangle.X = 10;
            cogRectangle.Y = 10;
            cogRectangle.Width = 100;
            cogRectangle.Height = 150;
            cogRectangle.Color = Cognex.VisionPro.CogColorConstants.Red;
            //创建圆
            Cognex.VisionPro.CogCircle cogCircle = new Cognex.VisionPro.CogCircle();
            cogCircle.CenterX = 20;
            cogCircle.CenterY = 20;
            cogCircle.Radius = 50;
            cogCircle.Color = Cognex.VisionPro.CogColorConstants.Yellow;
            //获取找到的线的像素长度
            //double lineLongth = cogFindLineTool.Results.GetLineSegment().Length;
            //ResultLabel.Text = $"找到的线的长度:{lineLongth}";

            //获取Bolb的测量数据
            double data =  cogBlobTool.Results.GetBlobs()[0].GetMeasure(CogBlobMeasureConstants.Area);
            ResultLabel.Text = $"找到的Blob数据:{data}";

            //显示图像
            Cognex.VisionPro.ICogRecord Record = cogToolGroup.CreateLastRunRecord();
            cogRecordDisplay1.Record = Record.SubRecords[1];
            cogRecordDisplay1.InteractiveGraphics.Add(ResultLabel,"",true); //将文本标签添加到图像显示
            cogRecordDisplay1.StaticGraphics.Add(ResultLabel,"Label");
            cogRecordDisplay1.StaticGraphics.Add(cogRectangle,"");
            cogRecordDisplay1.StaticGraphics.Add(cogCircle,"");
        }
    }
}
复制代码

运行结果:

 

posted @   金雨CHN  阅读(418)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示