建云 2025-7-18 16:43:55 | 显示全部楼层 | 阅读模式
抖音粉丝群1
『7x24小时有问必答』

AI浪潮下的计算机行业——从业者现状与未来展望

前言

随着工业4.0和智能制造的发展,工业视觉在质检、定位、识别等场景中发挥着越来越重要的作用。然而,开发一个完整的工业视觉系统往往需要集成相机控制、图像采集、图像处理、AI推理、PLC通信等多个模块,这对开发人员提出了较高的技术要求。
推荐一个基于 .NET 平台的开源工业视觉软件框架OpenIVS,提供完整的视觉系统开发所需的基础功能模块,帮助大家快速开发高效、稳定的工业检测系统。
项目介绍
OpenIVS 全称 Open Source Industrial Vision System,是一个面向工业视觉领域的开源软件框架,提供一套标准化、模块化、可扩展的视觉系统开发平台。
它基于 .NET 平台开发,支持与主流工业相机(如海康MVS)、图像处理库(如Halcon、OpenCV)、AI推理SDK(如深度视觉AI平台)进行集成,并提供 PLC 控制、图像采集、模型推理、结果反馈等功能模块,适用于各种自动化检测场景。
项目功能
OpenIVS 主要包含以下核心功能模块:
1、相机连接与图像采集
支持海康MVS相机驱动;
可配置触发方式、曝光参数、图像保存路径;
支持单相机或多相机管理;
图像质量与存储策略可自定义。
2、AI模型推理
集成深度视觉AI平台高性能SDK;
支持加载多个模型并实现级联推理;
支持图像预处理与结果后处理;
模型路径可通过界面动态配置。
3、PLC控制与设备逻辑
支持Modbus串口通信协议;
可设置串口参数、设备ID、寄存器地址;
提供位置控制、OK/NG信号反馈等基础逻辑;
支持扩展自定义控制动作。
4、系统配置与设置
提供图形化设置页面,便于修改相机参数、PLC设置、模型路径;
支持图像保存策略(是否保存OK图或NG图);
可灵活调整位置序列、处理流程、图像处理算法等。
项目特点模块化设计
各功能模块(相机、AI、PLC、图像处理)高度解耦,便于独立开发、调试与替换。
开源免费
作为开源项目,开发者可以自由查看源码、进行二次开发,适配自身业务需求。
易于扩展
支持多相机、多模型、多任务并发处理,满足复杂工业场景下的定制化需求。
跨平台兼容性好
基于 .NET 平台,可在 Windows 上稳定运行,未来可拓展至 Linux 环境。
实时性强、稳定性高
通过异步处理机制和良好的资源管理,确保系统在高频率检测任务中的实时性和稳定性。
安装需求
在使用 OpenIVS 前,需要安装以下软件:
1、海康相机MVS
版本:MVS_STD_4.4.0_240913.exe
下载地址:MVS_STD_4.4.0_240913.zip
用于相机连接和图像采集
2、Halcon(可选)
版本:halcon-20.11.1.0-windows.exe
如果需要使用Halcon接口进行图像处理,则需要安装
3、深度视觉AI平台
官方网站:https://dlcv.com.cn
需要安装高性能SDK套件才能加载模型进行推理
需要使用深度视觉AI平台训练模型
该SDK提供了模型推理所需的各项功能
项目使用1、修改PLC配置
在 ModbusManager.cs 中可以修改PLC相关配置:
串口通信参数设置
_modbusApi.SetSerialPort(

    settings.PortName,  // 串口名称

    settings.BaudRate,  // 波特率

    settings.DataBits,  // 数据位

    settings.StopBits,  // 停止位

    settings.Parity,    // 校验位

    (byte)settings.DeviceId   // 设备ID

);

也可以在设置页面修改:

位置控制参数
修改
MoveToPositionAsync
方法可调整位置控制逻辑
调整位置精度:
Math.Abs(currentPosition - position) < 1.0f
增加其他动作
可在ModbusManager中增加其他PLC控制动作,以满足特定需求。例如:增加 OK/NG 信号控制。
假设 PLC 通过写入寄存器 16 实现 OK/NG 信号控制,可以在
ModbusManager
中增加如下方法:
_modbusApi.WriteSingleRegister(16, isOK);

2、修改相机配置

修改相机配置

单相机的情况下,可以在设置页面修改,包括相机名称,触发方式等:

同时也可以在设置页面修改:

存图路径

存图质量

是否存储OK图或NG图

多相机支持

多相机的情况下,可以在 
CameraInitializer.cs
 中修改相机连接参数:

当前系统使用单例模式管理相机:
CameraInstance.Instance

若需支持多相机,可修改为列表管理多个相机实例
// 多相机管理示例

private List _cameraManagers = new List();

// 初始化多个相机

public void InitializeMultipleCameras(Settings settings)

{

      foreach (var cameraConfig in settings.CameraConfigs)

      {

         var cameraManager = new CameraManager();

         // 设置相机参数

         _cameraManagers.Add(cameraManager);

      }

}

3、修改模型推理方法

设置模型路径

在设置页面,可以修改模型路径:

自定义模型推理
在 ModelManager.cs 中可以修改AI模型推理相关配置:
加载多个模型
// 多模型管理示例

private Dictionary<string, Model> _models = new Dictionary<string, Model>();

// 加载多个模型

public void LoadModels(List<string> modelPaths)

{

    foreach (var path in modelPaths)

    {

        string modelName = Path.GetFileNameWithoutExtension(path);

        _models[modelName] = new Model(path, 0);

    }

}

实现模型级联

可修改PerformInference方法实现多模型级联推理
// 级联推理示例

public string PerformCascadeInference(Bitmap image)

{

    // 第一阶段:检测

    var detectionResult = _models["DetModel"].InferBatch(imageList);

    

    // 第二阶段:分割

    var smallImages = CropImage(image, detectionResult);

    var segmentationResult = _models["SegModel"].InferBatch(smallImages);

    

    return segmentationResult;

}

自定义结果处理

可修改结果提取和处理逻辑,实现更复杂的决策规则
4、修改设备逻辑
简单的设备逻辑可以在设置里修改:

自定义处理逻辑
在 
MainLoopManager.cs
 中可以修改整体处理逻辑:
1、修改位置序列
// 位置序列定义可以根据需要调整

private readonly float[] _positionSequence = new float[] { 195305415305 };

2、调整处理流程

主流程在
RunMainLoopAsync
方法中定义
可修改移动-拍照-推理的顺序或添加额外步骤
3、添加图像预处理
在ProcessImageAsync方法中添加图像处理逻辑
// 图像预处理示例

private Bitmap PreprocessImage(Bitmap image)

{

    using (var mat = BitmapConverter.ToMat(image))

    {

        // 添加预处理步骤,如二值化等

        Cv2.CvtColor(mat, mat, ColorConversionCodes.BGR2GRAY);

        Cv2.Threshold(mat, mat, 128255, ThresholdTypes.Binary);

        

        return BitmapConverter.ToBitmap(mat);

    }

}

4、自定义后处理逻辑

在推理结果处理后添加自定义逻辑,如结果聚合、条件判断等
// 后处理逻辑示例

private bool PostProcessResult(string result)

{

    // 实现自定义决策逻辑

    if (result.Contains("缺陷") && _currentPositionIndex == 2)

    {

        // 特定位置的特定缺陷处理

        return false;

    }

    return string.IsNullOrEmpty(result);

}

项目源码

Gitee:https://gitee.com/dl-cv/OpenIVS

总结
OpenIVS 是一个功能强大、结构清晰、易于扩展的开源工业视觉系统框架。无论你是刚入门的视觉开发新手,还是有经验的工程师,都可以借助 OpenIVS 快速搭建起属于自己的工业检测系统。
它不仅提供了从图像采集到缺陷识别的全流程能力,还开放了丰富的配置接口和扩展点,极大地降低了开发门槛和项目周期成本。
以上仅展示了OpenIVS 平台的部分功能。更多实用特性和详细信息,请大家访问项目源码。
希望本文能为从工业视觉开发的技术人员提供有价值的参考,感谢您阅读本篇文章,也欢迎交流讨论更多关于工业视觉平台设计与落地的经验!

最后

如果你觉得这篇文章对你有帮助,不妨点个赞支持一下!你的支持是我继续分享知识的动力。如果有任何疑问或需要进一步的帮助,欢迎随时留言。也可以加入微信公众号[DotNet技术匠] 社区,与其他热爱技术的同行一起交流心得,共同成长!

作者:小码编匠

出处:gitee.com/smallcore/DotNetCore

声明:网络内容,仅供学习,尊重版权,侵权速删,歉意致谢!

END

方便大家交流、资源共享和共同成长

纯技术交流群,需要加入的小伙伴请扫码,并备注加群

推荐阅读

上位机开发:C# 读写 PLC 数据块数据

.NET 8 工业级 PLC 通信库:实现媲美 KepServer 的功能

.NET 通用型物联网平台,从通信层到应用层的全栈设计

基于 MQTTnet 与 SunnyUI 的物联网教学可视化工具开发

WinForm + FastReport 开发的企业级资产管理系统(AMS)

WPF 智能工控系统开发实践,集成 PLC 数据采集、数据库操作与实时告警

觉得有收获?不妨分享让更多人受益
关注「DotNet技术匠」,共同提升技术实力

收藏

点赞

分享

在看


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

Copyright 2010-2015. All rights reserved. 

微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码