(零)如何做机器视觉项目
文章目录
- 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图形绘制的博文,就知道要想…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...

ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...
C语言中提供的第三方库之哈希表实现
一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...

PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...