news 2026/4/16 14:24:05

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/4/16 11:01:19

单目深度估计应用:MiDaS在GIS中的使用

单目深度估计应用&#xff1a;MiDaS在GIS中的使用 1. 引言&#xff1a;AI 单目深度估计与地理信息系统的融合前景 1.1 技术背景 随着人工智能在计算机视觉领域的持续突破&#xff0c;单目深度估计&#xff08;Monocular Depth Estimation&#xff09;正逐渐从实验室走向实际…

作者头像 李华
网站建设 2026/4/16 11:00:47

如何高效提取人名地名机构名?试试AI智能实体侦测服务,开箱即用

如何高效提取人名地名机构名&#xff1f;试试AI智能实体侦测服务&#xff0c;开箱即用 1. 背景与痛点&#xff1a;非结构化文本中的信息抽取挑战 在当今信息爆炸的时代&#xff0c;新闻、社交媒体、企业文档等场景中充斥着大量非结构化文本数据。这些文本虽然蕴含丰富的人名、…

作者头像 李华
网站建设 2026/4/16 11:08:36

MiDaS部署案例:智能家居中的深度感知应用

MiDaS部署案例&#xff1a;智能家居中的深度感知应用 1. 引言&#xff1a;AI 单目深度估计在智能场景中的价值 随着智能家居系统对环境理解能力的要求日益提升&#xff0c;传统的2D视觉已难以满足机器人导航、避障、空间建模等高级功能的需求。如何以低成本实现三维空间感知&…

作者头像 李华
网站建设 2026/4/16 13:02:05

万能分类器避坑指南:云端GPU实测,这些参数调优省80%时间

万能分类器避坑指南&#xff1a;云端GPU实测&#xff0c;这些参数调优省80%时间 引言 作为一名AI开发者&#xff0c;你是否遇到过这样的困境&#xff1a;在本地电脑上训练分类模型时&#xff0c;总是遇到"Out of Memory"&#xff08;OOM&#xff09;错误&#xff0…

作者头像 李华
网站建设 2026/4/15 14:45:57

如何提升图纸识别准确率?试试Qwen3-VL-WEBUI增强推理模式

如何提升图纸识别准确率&#xff1f;试试Qwen3-VL-WEBUI增强推理模式 在工业制造、建筑设计和设备维护等场景中&#xff0c;图纸是信息传递的核心载体。然而&#xff0c;大量历史图纸以扫描件或手写形式存在&#xff0c;传统OCR工具在处理模糊、倾斜、多语言混排或复杂版面时往…

作者头像 李华