纯C#使用Visionpro工具2 操作斑点工具

结果图

通过斑点工具中非圆性找取圆特征

代码 

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.ImageFile;
using Cognex.VisionPro;
using Cognex.VisionPro.Blob;
using Cognex.VisionPro.Exceptions;

namespace myapp4
{
    public partial class Form1 : Form
    {
        //成员声明
        CogBlobTool mTool;
        CogImageFileTool mImageFileTool;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            mTool = new CogBlobTool();
            mImageFileTool = new CogImageFileTool();

            mImageFileTool.Operator.Open("bracket_std.idb", CogImageFileModeConstants.Read);
            mImageFileTool.Run();

            CogDisplay1.Image = mImageFileTool.OutputImage;//设置输出图像
            CogDisplay1.Fit();

        }

        private void button1_Click(object sender, EventArgs e)
        {
            CogDisplay1.StaticGraphics.Clear();//清空静态图形
            //运行blob工具
            mTool.InputImage = mImageFileTool.OutputImage;
            mTool.Run();
            //获取斑点的轮廓 并显示
            CogDisplay1.Image = mImageFileTool.OutputImage;


            int r;
            for (r = 0; (r<= (mTool.Results.GetBlobs().Count - 1)); r++)
            {
                if (optCircular.Checked)//如果选取圆性
                {
                    //  display circular objects here
                    if (((mTool.Results.GetBlobs()[r].Acircularity > 0.9)
                                && (mTool.Results.GetBlobs()[r].Acircularity < 1.1)))
                    {
                        CogDisplay1.StaticGraphics.Add(mTool.Results.GetBlobs()[r].CreateResultGraphics(CogBlobResultGraphicConstants.Boundary), "test");
                    }

                }
                else//非圆性
                {
                    //  display non-circular objects here
                    if (((mTool.Results.GetBlobs()[r].Acircularity <= 0.9)
                                || (mTool.Results.GetBlobs()[r].Acircularity >= 1.1)))
                    {
                        CogDisplay1.StaticGraphics.Add(mTool.Results.GetBlobs()[r].CreateResultGraphics(CogBlobResultGraphicConstants.Boundary), "test");
                    }

                }

            }

        }

    }
}

注意开发时,需要引入对应控件的命名控件。具体如下。

### 康耐视 VisionPro 斑点工具的功能与使用 #### 斑点工具概述 康耐视 VisionPro 中的斑点工具主要用于检测图像中的特定区域或目标物,能够帮助用户快速定位并分析图像中的斑点特性。这类工具有助于实现自动化缺陷检测、尺寸测量以及形状分析等功能[^1]。 #### 主要功能 斑点工具的核心功能在于通过分割算法提取图像中的连通区域,并进一步对这些区域进行量化分析。以下是其主要功能: - **斑点检测**:自动识别图像中的独立斑点或连续区域。 - **形态学分析**:计算斑点的面积、周长、中心位置以及其他几何属性。 - **阈值分割**:基于灰度值或其他特征将感兴趣的目标从背景中分离出来。 - **过滤条件设置**:支持按大小、形状、方向等多种标准筛选符合条件的斑点。 - **边界框生成**:为每个检测到的斑点生成最小外接矩形或多边形表示形式[^3]。 #### 使用方法 为了更好地理解如何应用斑点工具,在实际项目开发过程中通常遵循以下逻辑流程描述(注意不涉及具体步骤词汇): 1. 加载待处理图像作为输入源; 2. 配置合适的预处理技术以增强对比度或者去除噪声干扰项; 3. 调整参数完成二值化转换从而区分前景物体同背景环境之间的差异程度; 4. 启动斑点查找模块执行目标搜寻任务并将结果保存至指定变量当中以便后续调用; 下面展示了一段简单的 C# 实现代码用于演示目的: ```csharp // 初始化斑点工具实例 this.Tools.CogBlobTool1.InputImage = inputImage; // 运行斑点工具 this.Tools.CogBlobTool1.Run(); // 获取所有斑点数量 int blobCount = this.Tools.CogBlobTool1.Results.GetBlobs().Count; // 查找最大的斑点对应的边界框 if (blobCount > 0) { var largestBlobRect = this.Tools.CogBlobTool1.Results.GetBlobByID(blobCount - 1).GetBoundingBox(CogBlobAxisConstants.Principal); } ``` 此代码片段展示了如何加载一幅图片进入 `CogBlobTool` 并运行该工具来统计存在的斑点数目,同时选取其中面积最大的那个斑点所包围起来的确切范围信息。 #### 注意事项 当运用此类高级视觉软件时需要注意几个方面的问题以免影响最终效果准确性: - 输入数据质量直接影响输出精度因此建议先做必要的清理工作比如去噪平滑等操作后再送入下一步骤继续加工; - 参数调节需依据实际情况灵活变动不可一概而论应反复试验找到最佳组合方案达到预期目标为止; - 对复杂场景下的多重约束条件下可能还需要额外引入其他辅助手段共同协作才能解决问题完全依靠单一类型的算法往往难以胜任全部挑战情境 。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值