news 2026/6/10 19:58:39

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/6/10 11:40:51

轻量级AI视觉:MiDaS模型部署全解析

轻量级AI视觉&#xff1a;MiDaS模型部署全解析 1. 引言&#xff1a;为何单目深度估计正在成为AI视觉新热点&#xff1f; 在计算机视觉领域&#xff0c;从2D图像中理解3D空间结构一直是核心挑战之一。传统方法依赖双目立体视觉或多传感器融合&#xff08;如LiDAR&#xff09;&…

作者头像 李华
网站建设 2026/6/10 11:39:34

MiDaS深度热力图生成:艺术创作中的创新应用

MiDaS深度热力图生成&#xff1a;艺术创作中的创新应用 1. 引言&#xff1a;AI 单目深度估计的视觉革命 在计算机视觉领域&#xff0c;从二维图像中恢复三维空间信息一直是极具挑战性的任务。传统方法依赖双目立体视觉或多传感器融合&#xff0c;而近年来&#xff0c;单目深度…

作者头像 李华
网站建设 2026/6/10 11:41:43

分类模型部署难题?预置镜像一键解决所有依赖

分类模型部署难题&#xff1f;预置镜像一键解决所有依赖 引言 作为一名AI工程师&#xff0c;你是否经历过这样的噩梦&#xff1a;为了部署一个简单的分类模型&#xff0c;在本地环境折腾PyTorch和TensorFlow的版本兼容问题整整三天&#xff1f;CUDA版本不匹配、依赖库冲突、环…

作者头像 李华
网站建设 2026/6/10 9:08:57

多模态模型部署新选择|Qwen3-VL-WEBUI镜像全面解读

多模态模型部署新选择&#xff5c;Qwen3-VL-WEBUI镜像全面解读 随着多模态大模型在视觉理解、图文生成和跨模态推理等领域的持续突破&#xff0c;如何高效部署并快速验证其能力成为开发者关注的核心问题。阿里云推出的 Qwen3-VL-WEBUI 镜像为这一需求提供了开箱即用的解决方案…

作者头像 李华
网站建设 2026/6/10 9:06:39

从照片到3D:MiDaS教程

从照片到3D&#xff1a;MiDaS教程 1. 引言&#xff1a;AI 单目深度估计的现实意义 在计算机视觉领域&#xff0c;如何让机器“理解”三维空间一直是核心挑战之一。传统方法依赖双目摄像头或多传感器融合来获取深度信息&#xff0c;但这些方案成本高、部署复杂。近年来&#x…

作者头像 李华
网站建设 2026/6/10 9:05:18

Linux系统调用追踪与性能分析实战

前言 程序跑得慢&#xff0c;但不知道慢在哪。CPU不高、内存够用、磁盘IO也正常&#xff0c;可就是响应慢。这时候需要看系统调用&#xff08;syscall&#xff09;&#xff1a;程序到底在做什么&#xff1f;是频繁读写文件、网络IO阻塞&#xff0c;还是系统调用本身开销太大&am…

作者头像 李华