(零)如何做机器视觉项目
文章目录
- 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图形绘制的博文,就知道要想…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...
EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...
技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...
沙箱虚拟化技术虚拟机容器之间的关系详解
问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西,但是如果把三者放在一起,它们之间到底什么关系?又有什么联系呢?我不是很明白!!! 就比如说: 沙箱&#…...
