(零)如何做机器视觉项目
文章目录
- 1 项目的前期准备
- 1.1 从5个方面初步分析客户需求
- 1.2 方案评估与验证
- 1.3 签订合同
- 2 项目规划
- 2.1 定义客户端的详细需求
- 2.2 制定项目管理计划
- 2.3 方案评审
- 3 详细设计
- 3.1 硬件设备的选择与环境搭建
- 3.2 软件开发平台与开发工具的选择
- 3.3 机器视觉系统的整体框架与开发流程
- 3.4 交互界面设计
- 3.5 Halcon与开发工具
- 4 项目交付
- 4.1 软件功能测试
- 4.2 现场调试
- 4.3 系统维护
机器视觉一般都要求与现有生产线或者测试控制系统配合使用,因此机器视觉项目不仅要提供视觉产品,而且要提供能够与客户的自动化系统集成的完整解决方案。由于项目的复杂性和协同性,机器视觉项目的顺利完成离不开好的规划和细致的执行。
1 项目的前期准备
1.1 从5个方面初步分析客户需求
在立项之前,要与客户沟通,明确项目的基本需求,以便评估项目的可行性。主要包括五个方面
(1)项目来源:主要指项目的意义,前景,市场价值等高层级的内容。
(2)开发内容:包括视觉系统要完成的任务、待实现的主要功能,明白大致需要“做什么”。
(3)使用环境:明确客户的使用环境很重要,包括硬件、软件和结构等方面的使用需求。对于机器视觉项目而言,使用环境往往影响设计方案的选择。例如:客户可能对设备的结构尺寸等有特别的要求,因此需要根据使用环境选择合适的图像采集设备;又比如,有时客户工作的计算机操作系统比较特殊并且无法更换,这就需要对软硬件的兼容程度和运行效率进行评估。
(4)开发方式:需要了解客户希望以何种形式完成开发,如共同开发或者完成承揽,是否接受外包等,还有项目中双方的工作与责任如何分配,如哪一方负责采购相机等。
(5)交付成果与形式:明确交付产品的内容与形式,如软件、硬件设备和文档等。
1.2 方案评估与验证
得到初步需求以后,根据被检测样品和检测环境,可以进行方案可行性评估,一般包括六个方面。
(1)技术可行性。
(2)时间要求。
(3)空间要求:比如相机焦距,有限的使用空间有时会影响到相机的成像质量。
(4)光照环境
(5)通信接口
(6)成本与费用。
1.3 签订合同
签订合同的时候,除了要关注商务部分,还要关注以下技术部分的内容。
(1)项目的范围:功能点,如待检测的对象,应完成的工作等。
(2)明确验收标准
(3)其他确认:
如(1)视觉检测的判定标准(2)系统最终交付时间和阶段性成果等。(3)相机镜头、采集卡等设备由哪一方采购,以及采购时间和待选择的厂家信息等。(4)其他,如机械结构设计的要求,以及培训和售后的要求等。
2 项目规划
规划阶段要进行的主要工作包括订定义客户的详细需求、指定项目管理计划、方案评审等。
2.1 定义客户端的详细需求
2.2 制定项目管理计划
2.3 方案评审
3 详细设计
3.1 硬件设备的选择与环境搭建
(1)相机:一般选择工业相机,主要用于图像采集和成像。
(2)镜头:镜头关系到成像的质量,应根据实际项目的需要选择合适的镜头。
(3)采集卡:采集卡的功能是将数字信号或模拟信号转换后传送给计算机主机
(4)连接方式:值相机的连接方式
(5)光源:根据拍摄的需求选择光源或布置光照环境。
(6)结构件:指机器视觉设备所需的机械组件,如夹具、支架、固定装置等。
3.2 软件开发平台与开发工具的选择
机器视觉项目的软件开发一般包括所用到的图像库、算法和开发平台,可根据项目需要和开发者的偏好进行选择。
(1)图像库:指图像处理算法包,目前比较主流的适用于机器视觉的算法包有OpenCV、Halcon、Labview等。其中Opencv的应用最为广泛,但在机器视觉中有很多局限性。因此工业视觉检测目前主要还是使用Halcon,其算法集成度高。
(2)算法:主要指为了检测项目中的具体内容而设计的软件解决方法,如边缘检测、特征匹配、文字识别等,都是为了完成检测步骤中特定检测任务而设计的。
(3)开发平台:值开发软件的工具。
3.3 机器视觉系统的整体框架与开发流程
算法实现分为图像输入、中间处理和输出三部分。工业相机设备获取图像作为第一步,Halcon图像处理包括图像预处理、图像增强、图像分割、特征提取、图像理解等,这些作为第二步;算法实现后,将其导出为C++代码,供界面编程使用。
交互实现部分不涉及图像处理算法,采用合适的开发工具即可,比如Qt,MFC等工具。
机器视觉开发的基本框架如下:
(1)采集图像
(2)图像处理
(3)图像分析
(4)结果输出
3.4 交互界面设计
3.5 Halcon与开发工具
开发平台的选择范围比较广,比较常用的有Visual studio和Qt,在编写软件界面方面功能都十分强大。因此,开发者可能根据项目需要或自己擅长的开发平台进行选择。
4 项目交付
4.1 软件功能测试
软件功能测试主要是在到达客户现场之前对软件行测试,是在交付之前进行的内部测试,测试目的是检查机器视觉系统的基本功能是否符合《产品需求规格说明书》的要求。软件功能测试的主要内容如下:
(1)采集图像功能:主要测试采集的图像是否正常
(2)功能模块测试:逐条核对应有的功能是否完全实现
(3)交互界面测试:主要测试用户在与系统进行交互的过程中是否有异常
(4)通信测试:测试机器视觉系统与外部通信接口的数据传输是否正常
4.2 现场调试
目的是检查机器视觉系统在实际工作场景中是否能正常运转,这一步也是客户对机器视觉系统的验收,将针对合同查看系统是否满足验收标准。这部分工作主要分为三点:
(1)设备安装
(2)系统连调:调试完整的程序,按实际应用场景中的正常使用流程进行检测调试,由于现场调试时的不确定因素比较多,如环境光、机械振动、系统兼容性等都有可能导致异常的出现,因此应当在交付之前提前做好充足的准备,对可能出现的异常情况进行模拟和预防,并预留好解决异常的时间和人员。
(3)文档交接:包括合同中的指定文档资料,如用户使用手册、常见问题及解决方法、开发总结报告、验收报告、装箱单、软件光盘等。
4.3 系统维护
交付结束后的工作主要有人员培训和设备维护等。
人员培训班主要是对客户方的实际使用者和测试者等相关人员进行操作培训,结合用户使用手册进行实际操作的讲解,同时对注意事项和可能出现的异常情况的处理方法进行说明。
设备维护主要是对交互的软硬件的后期技术支持。良好的技术支持不仅是专业精神的体现,也能维持与客户的良好关系,为未来的合作建立基础。
加油,争取在一年至两年之内当上项目经理,略略略
相关文章:
(零)如何做机器视觉项目
文章目录 1 项目的前期准备1.1 从5个方面初步分析客户需求1.2 方案评估与验证1.3 签订合同 2 项目规划2.1 定义客户端的详细需求2.2 制定项目管理计划2.3 方案评审 3 详细设计3.1 硬件设备的选择与环境搭建3.2 软件开发平台与开发工具的选择3.3 机器视觉系统的整体框架与开发流…...
【Leetcode】滑动窗口合集
这里写目录标题 209.长度最小的子数组题目思路代码 3. 无重复字符的最长子串(medium)题目思路 11. 最大连续 1 的个数 III题目思路 1658. 将 x 减到 0 的最⼩操作数题目思路代码 904. 水果成篮题目思路代码 438.找到字符串中所有字母的异位词题目思路代码…...
【C++】STL详解(九)—— set、map、multiset、multimap的介绍及使用
📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:C学习 🎯长路漫漫浩浩,万事皆有期待 上一篇博客:【C】STL…...
计组—— I/O系统
📕:参考王道课件 目录 一、I/O系统的基本概念 1.什么是“I/O”? 编辑2.主机如何和I/O设备进行交互? 3.I/O控制方式 (1)程序查询方式 (2)程序中断方式 (3&#x…...
基于vc6+sdk51开发简易文字识别转语音的程序
系统:window7 软件:vc6.0 目的:简易文字转语音真人发声 利用2023国庆小长假,研究如何将文言转语音,之前在网上查询相关知识,大致了解微信语音转换,翻译官之类软件的原理,但要加入神…...
DevOps:自动化部署和持续集成/持续交付(CI/CD)
DevOps:自动化部署和持续集成/持续交付(CI/CD) 在现代软件开发领域,DevOps(Development和Operations的组合)已经成为一个不可或缺的概念。它代表了一种将软件开发和运维(Operations)…...
专业图标制作软件 Image2icon 最新中文 for mac
Image2Icon是一款用于Mac操作系统的图标转换工具。它允许用户将常见的图像文件(如PNG、JPEG、GIF等)转换为图标文件(.ico格式),以便在Mac上用作应用程序、文件夹或驱动器的自定义图标。 以下是Image2Icon的一些主要功…...
数据结构:顺序表
SeqList.h #pragma once #include<stdio.h> #include<assert.h> #include<stdlib.h>typedef int SLDataType; //#define NULL 0typedef struct SeqList {SLDataType* a;int size;//顺序表中存储的有效元素的个数int capacity;//空间的大小 }SL;void SLInit(…...
僵尸进程的产生与处理
僵尸进程(Zombie Process)是指在操作系统中已经完成了执行,但其父进程尚未调用wait()或waitpid()来获取其终止状态的子进程。当一个进程结束时,操作系统会保留该进程的一些基本信息,包括进程ID(PID…...
TouchEffects - Android View点击特效
官网 GitHub - likaiyuan559/TouchEffects: Android View点击特效TouchEffects,几行代码为所有控件添加点击效果 项目简介 Android View点击特效TouchEffects,几行代码为所有控件添加点击效果 TouchEffects能够帮助你更快速方便的增加点击时候的效果,TouchEffect…...
从ContinuousEventTimeTrigger/ContinuousProcessingTimeTrigger代码看如何实现一个自定义的触发器
背景 当我们想要实现提前触发计算的触发器时,我们可以使用ContinuousEventTimeTrigger/ContinuousProcessingTimeTrigger作为触发器达到比如几分钟触发一次计算并发送计算结果的类,我们本文就从代码角度解析下实现自定义触发器的一些注意事项 Continuo…...
Linux 5种网络模型
[参考]:《黑马程序员Redis》https://www.bilibili.com/video/BV1cr4y1671t/?p166&share_sourcecopy_web&vd_source9e65300ccca322aeb367bb1eb677b0fc [参考]:《操作系统》 [参考]:《UNIX网络编程》 为了避免用户应用导致冲突甚至内…...
10.1 调试事件读取寄存器
当读者需要获取到特定进程内的寄存器信息时,则需要在上述代码中进行完善,首先需要编写CREATE_PROCESS_DEBUG_EVENT事件,程序被首次加载进入内存时会被触发此事件,在该事件内首先我们通过lpStartAddress属性获取到当前程序的入口地…...
Linux系统常用指令篇---(一)
Linux系统常用指令篇—(一) 1.cd指令 Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件。 语法:cd 目录名 功能:改变工作目录。将当前工作目录改变到指定的目录下。 (简单理解为进入指定目录下) 举例: cd .. : 返…...
【初识Linux】:常见指令(1)
朋友们、伙计们,我们又见面了,本期来给大家解读一下有关Linux的基础知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从入门到精通 数…...
STM32复习笔记(四):看门狗
目录 (一)简介 (二)IWDG IWDG的CUBEMX工程配置 IWDG相关函数(非常少,所以直接贴上来): (三)WWDG (一)简介 看门狗分为独立看门…...
【C++进阶(七)】仿函数深度剖析模板进阶讲解
💓博主CSDN主页:杭电码农-NEO💓 ⏩专栏分类:C从入门到精通⏪ 🚚代码仓库:NEO的学习日记🚚 🌹关注我🫵带你学习C 🔝🔝 模板进阶 1. 前言2. 仿函数的概念3. 仿函数的实…...
基于SSM的电动车上牌管理系统(有报告)。Javaee项目。
演示视频: 基于SSM的电动车上牌管理系统(有报告)。Javaee项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring SpringM…...
mstsc无法保存RDP凭据, 100%生效
问题 即使如下两项都打勾,其还是无法保存凭据,特别是连接Ubuntu (freerdp server): 解决方法 网上多种复杂方法,不生效,其思路是修改后台配置,以使mstsc跟平常一样自动记住凭据。最后,如下的…...
OpenGLES:绘制一个混色旋转的3D球体
效果展示 本篇博文会实现一个混色旋转的3D球体 一.球体解析 前面几篇博文讲解了如何使用OpenGLES实现不同的3D图形 本篇博文讲解怎样实现3D世界的代表图形:一个混色旋转的3D球体 1.1 极限正多面体 如果有学习过我前几篇3D图形绘制的博文,就知道要想…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用
文章目录 一、背景知识:什么是 B-Tree 和 BTree? B-Tree(平衡多路查找树) BTree(B-Tree 的变种) 二、结构对比:一张图看懂 三、为什么 MySQL InnoDB 选择 BTree? 1. 范围查询更快 2…...
