VGA信号采集到电脑只是第一步,真正有价值的是对画面做处理,读数、检测、存证,把图像变成可用信息,上位机开发很多老设备没有数据接口,只有VGA画面输出,要让产线电脑端系统用上这些数据,图像处理是必经之路,这都是基本功,上位机开发画面处理第一步是预处理,VGA模拟信号有噪点和抖动,先做去噪、锐化、裁剪,把有用区域提出来,这一步省不得时间,上位机开发裁剪很重要,VGA画面可能带黑边或菜单,只保留读数和关键区域,处理区域小一半速度快一倍,把小事做扎实比啥都强,上位机开发分辨率适配要注意,不同设备输出分辨率不同,处理逻辑不能写死分辨率,按相对坐标定位才通用,每个环节都有它的道理,上位机开发缩放用双线性插值就够了, Lanczos更清晰但慢,工业项目实时性优先,够用就行,切记,管理出效益细节见真章,
上位机开发的画面预处理
颜色空间转换是基础,RGB转HSV做颜色检测更直观,H是色调S是饱和度V是明度,不受亮度影响大,上位机开发OCR识别是VGA处理最常见的需求,设备屏幕上的温度、压力、计数,识别出来变成数字才能用,该花的功夫省不下来,上位机开发通用OCR比如Tesseract对工业字体效果一般,工业设备字体固定、背景单一,训练专用模型准确率能到99%以上,上位机开发训练数据要覆盖各种情况,正常、偏色、模糊、低分辨率,每个数字几百张样本就够,别嫌烦,别抱侥幸心理觉得不会遇到,上位机开发识别前要做二值化,把数字和背景分开,Otsu自适应阈值比固定阈值好用,光照变化也能适应,别急,这些细节别落下,
上位机开发的OCR识别
数字分割是关键,七段数码管和点阵屏分割方式不同,七段管用连通域,点阵屏按网格切,老老实实做不返工,上位机开发识别结果要做校验,比如温度范围-50到200,超出范围的结果当异常处理,别直接信OCR,慢慢来,现场都用得上,上位机开发多帧确认更可靠,连续3帧识别结果一致才采信,偶尔误识别不会影响最终数据,要细心,真到现场你就明白这些话的分量,上位机开发颜色检测用于状态判断,比如指示灯红黄绿、液体颜色、产品表面变色,HSV阈值分割就能做,别嫌麻烦,老工程师都懂,上位机开发阈值别写死,不同设备色温不同,现场采几张图标定阈值,存配置文件,换设备重新标定,千万别马虎,别等出事才想起来,
上位机开发的颜色检测
颜色检测要做区域限定,只检测指示灯那一小块,全图检测容易被其他颜色干扰,心里有数,前期偷懒后期还债,上位机开发形态学操作去噪点,开运算去小白点,闭运算填小洞,处理后轮廓更干净,判断更准,出了问题不好查,这都是踩坑换来的,上位机开发缺陷检测比颜色复杂,比如表面划痕、污渍,用边缘检测或者模板匹配,深度学习效果更好但数据量大,好记性不如烂笔头,上位机开发小样本场景用模板匹配,良品图做模板,被测图和模板做差,差异大就是缺陷,简单有效,按顺序来就行,做项目就是这样,上位机开发画面存证是合规和追溯的刚需,关键操作、异常时刻的画面必须存下来,带时间戳和设备编号,都是细节,很多人栽在这里,
上位机开发的画面存证
存证方式有两种,一种是定时截图存BMP或PNG,另一种是连续录像存MP4,按需选择,看似小事实则大,上位机开发截图存证省空间,适合事件触发,异常发生时截一张带标注的图,存数据库或文件,磨刀不误砍柴工,无规矩不成方圆,上位机开发录像存证适合全程追溯,H.264编码1080P30帧每小时约1G,重要产线全程录,普通产线只录异常时段,上位机开发时间戳要从服务器取,别用工控机本地时间,工控机时间不准会导致追溯混乱,NTP同步是标配,急不得的,这点要记牢,上位机开发数据叠加标注很实用,把采集到的PLC数据实时画在VGA画面上,画面和数据同框,排查问题一目了然,细节决定成败,
上位机开发的集成要点
叠加用透明窗口或者直接画在采集帧上,透明窗口性能好,画在帧上存证时能一起存下来,要沉住气,稳扎稳打,上位机开发编码压缩要注意延迟,硬编码用显卡NVENC,CPU占用低延迟小,软编码x264质量好但CPU占用高,上位机开发实时流上传用RTSP或RTMP,延迟1秒左右,告警画面先本地存再上传,网络断了不丢数据,凡事预则立,实事求是,上位机开发C#做VGA处理用WPF做界面、EmguCV做图像,EmguCV是OpenCV的C#封装,API基本对应,上位机开发采集卡SDK多数是C++的,C#调用要写DllImport,注意内存释放和线程同步,别在UI线程做重计算,
