news 2026/5/11 20:01:41

VisionPro二开之工作流程模块-WorkFlow

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
VisionPro二开之工作流程模块-WorkFlow

VisionPro二开之工作流程模块-WorkFlow

using AOI外观检测.Algorithm;using AOI外观检测.Models;using HalconDotNet;using LiveCharts;using System;using System.Collections.Concurrent;using System.Collections.Generic;using System.IO;using System.Linq;using System.Text;using System.Threading;using System.Threading.Tasks;using System.Windows.Forms;namespace AOI外观检测.WorkFlow{public class WorkFlowService{// 定义图像队列public ConcurrentQueue<ImageInfo>ImageList1=new ConcurrentQueue<ImageInfo>();// 添加图像到图像队列publicvoidAddImageInfo1(ImageInfo info){ImageList1.Enqueue(info);//($"相机1新增检测任务,任务ID = {info.TaskID}");}privatestaticWorkFlowService instance=newWorkFlowService();privateWorkFlowService(){}publicstaticWorkFlowService Instance{get{returninstance;}}//3. 确定供外界调用的代码资源// 工作标志位private bool IsWorking=false;//关闭工作线程publicvoidStopWorkFlow(){IsWorking=false;}//启动工作线程publicvoidStartWorkFlow(){Task.Run(Working);}//工作线程publicvoidWorking(){// 工作位为trueIsWorking=true;while(IsWorking){// 一 判别是否处于在线状态if(!GlobalParamters.IsOnline){// 停止以后循环IsWorking=false;// 跳出当前循环break;}// 生产流程// 二 取图(如果取不出图,则跳过)if(!ImageList1.TryDequeue(out ImageInfo info)){Thread.Sleep(5);continue;}try{DateTime dateTime_Start=DateTime.Now;HObject defectRegion=AlgorithmService.Instance.DetectZW(info.Image,GlobalParamters.CurrAlgoParam);// 获取主窗体var mainForm=Application.OpenForms.OfType<MainForm>().FirstOrDefault();// 四 将检测结果发送上位机if(defectRegion!=null){CommunicateService.Instance.Send("NG");GlobalParamters.NGNum++;TimeSpan CT_Elapse=DateTime.Now-dateTime_Start;Log.Info($"本次算法处理-CT:{CT_Elapse.TotalMilliseconds}ms");// 五 显示NG图像// 使用扩展方法更新UImainForm.Invoke(newAction(()=>{// 显示图像mainForm.hWindow_Final2.HobjectToHimage(info.Image);// 显示缺陷mainForm.hWindow_Final2.DispObj(defectRegion,"red");Log.Info($"图像ID:{info.ImageID} 已发送:NG\n");}));//六.多线程保存NG图Task.Run(newAction(()=>{if(!Directory.Exists(Path.Combine("D:\\AOI存图","NG",info.ImageDate))){Directory.CreateDirectory(Path.Combine("D:\\AOI存图","NG",info.ImageDate));}// NG原图HOperatorSet.WriteImage(info.Image,"bmp",0,Path.Combine("D:\\AOI存图","NG",info.ImageDate,info.ImageID));//计算通道HOperatorSet.CountChannels(info.Image,out HTuple channels);HObject showImg=newHObject();if(channels.D!=1){//转为灰度图HOperatorSet.Rgb1ToGray(info.Image,out showImg);}else{showImg=info.Image;}// 对缺陷矩形进行绘制HOperatorSet.PaintRegion(defectRegion,showImg,out HObject ResImg,255,"margin");// NG效果图保存HOperatorSet.WriteImage(ResImg,"jpeg",0,Path.Combine("D:\\AOI存图","NG",info.ImageDate,info.ImageID));}));}else{CommunicateService.Instance.Send("OK");GlobalParamters.OKNum++;TimeSpan CT_Elapse=DateTime.Now-dateTime_Start;Log.Info($"本次算法处理-CT:{CT_Elapse.TotalMilliseconds}ms");// 使用扩展方法更新UImainForm.Invoke(newAction(()=>{Log.Info($"图像ID:{info.ImageID}已发送:OK\n");}));// 多线程保存OK图Task.Run(newAction(()=>{if(!Directory.Exists(Path.Combine("D:\\AOI存图","OK",info.ImageDate))){Directory.CreateDirectory(Path.Combine("D:\\AOI存图","OK",info.ImageDate));}HOperatorSet.WriteImage(info.Image,"bmp",0,Path.Combine("D:\\AOI存图","OK",info.ImageDate,info.ImageID));}));}// 获取主窗体GlobalParamters.AllNum=GlobalParamters.OKNum+GlobalParamters.NGNum;// 更新UI统计数据mainForm.Invoke(newAction(()=>{mainForm.label1.Text=GlobalParamters.AllNum.ToString();mainForm.label3.Text=GlobalParamters.NGNum.ToString();mainForm.label5.Text=GlobalParamters.OKNum.ToString();mainForm.pieChart1.Series[0].Values=new ChartValues<double>{GlobalParamters.OKNum};mainForm.pieChart1.Series[1].Values=new ChartValues<double>{GlobalParamters.NGNum};}));// 防止cpu过载Thread.Sleep(2);}catch(Exception ex){}}}}}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/11 0:24:25

MiDaS模型部署教程:CPU环境下的高效深度估计

MiDaS模型部署教程&#xff1a;CPU环境下的高效深度估计 1. 引言&#xff1a;AI 单目深度估计的现实意义 在计算机视觉领域&#xff0c;从单张2D图像中恢复3D空间结构一直是极具挑战性的任务。传统方法依赖多视角几何或激光雷达等硬件设备&#xff0c;成本高且部署复杂。近年…

作者头像 李华
网站建设 2026/5/10 19:57:25

单目视觉测距系统:基于MiDaS的完整部署教程

单目视觉测距系统&#xff1a;基于MiDaS的完整部署教程 1. 引言 1.1 AI 单目深度估计 —— 让2D图像“看见”3D世界 在自动驾驶、机器人导航、AR/VR和智能安防等领域&#xff0c;深度感知是实现环境理解的核心能力。传统方案依赖双目立体视觉或多线激光雷达&#xff08;LiDA…

作者头像 李华
网站建设 2026/5/10 20:39:22

MiDaS性能优化实战:降低内存占用的配置方法

MiDaS性能优化实战&#xff1a;降低内存占用的配置方法 1. 背景与挑战&#xff1a;单目深度估计中的资源瓶颈 在边缘计算和轻量化AI部署日益普及的今天&#xff0c;单目深度估计技术正广泛应用于AR/VR、机器人导航、3D重建和智能安防等领域。其中&#xff0c;Intel ISL实验室…

作者头像 李华
网站建设 2026/5/3 14:14:06

深度估计技术比较:MiDaS优势与应用场景

深度估计技术比较&#xff1a;MiDaS优势与应用场景 1. 引言&#xff1a;单目深度估计的技术演进与挑战 在计算机视觉领域&#xff0c;深度估计是实现三维空间感知的核心能力之一。传统方法依赖双目立体视觉&#xff08;Stereo Vision&#xff09;或多视角几何&#xff08;Mul…

作者头像 李华
网站建设 2026/5/2 23:48:26

单目3D感知MiDaS:机器人导航应用开发实战

单目3D感知MiDaS&#xff1a;机器人导航应用开发实战 1. 引言&#xff1a;单目深度估计在机器人导航中的价值 随着服务型机器人、自动驾驶和AR/VR技术的快速发展&#xff0c;环境三维感知能力已成为智能系统的核心需求。传统方案依赖激光雷达&#xff08;LiDAR&#xff09;或…

作者头像 李华