上位机图像处理和嵌入式模块部署(上位机主要功能)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
目前关于机器视觉方面,相关的软件很多。比如说商业化的halcon、vision pro、vision master,当然也可以用opencv、pytorch自己写软件,这都是可以的。不过因为机器视觉项目部署的时间都比较短,而且对产品的稳定性和性能要求较高,所以如果自己写的话,简简单单使用第三方提供的api,一般是没有办法满足要求的。通常情况下,都需要自己对代码进行优化处理一下,这样才能够达到客户的要求。
那说了这么多,机器视觉软件一般有哪些功能呢?
1、图像预处理
图像预处理其实比较好理解,就是拿到图像之后做一些简单的处理。这部分处理之后的结果还是图像,但是输出的结果已经为最终我们的算法处理,做了一个很好的铺垫。比如说滤波、反转、旋转、边缘检测、二值化、膨胀、腐蚀等等,这些都是图像预处理的部分。我们读书的时候,以及市面上看到的大部分图像处理的书,上面讲解的内容其实也主要是这么一部分。
2、摄像头标定
很多摄像头,如果没有标定的话,获取的图像其实是带有畸变信息的。比如现在很多汽车上面都带有360功能,上面的图像就是根据4个camera图像计算出来的。camera本身为了获得更大的视场角,镜头都是鱼眼镜头,但是这种图像都是发生严重畸变的。所以,一般拿到摄像头之后,我们有必要通过棋盘格对它们进行畸变矫正的处理,这样才能送给后续的算法做进一步处理。
3、光源处理
好的图像,除了sensor和镜头之外,另外一个很重要的因素就是光源。在市场上可以买到的光源设备,一般就是光源本身和光源控制器。但是如何通过图像质量本身,借助于反馈控制的方法去实时地控制光源,这是很大的一门学问。有了好的图像,算法的编写上面都会轻松不少。
4、条形码、二维码识别
目前很多物料、设别、仓库的管理都是通过各种图形码来识别的。这里面又是以条形码和二维码最为普遍,所以上位机软件支持条形码和二维码也就不足为奇了。
5、定位功能
有了前面的图像预处理,一般来说我们就可以通过轮廓查找的方法找到一些潜在的候选项。然后再借助于长宽比、面积、圆度、周长、先验知识等信息,很容易提取出我们想要检查的区域模块。这个时候,如果图像上还有明显的标记点,这个时候就比较容易计算出相关物体的位置信息,也为下一步机械手的参与打下基础。
当然,上面的方法对于现场的fae来说稍显复杂,模板匹配对于他们来说,或许更加容易接受一点。
6、测量
测量是图像处理的另外一个重要功能。这里的测量,不仅仅是测量特定物体的大小,还有可能是找到一个物体之后,测量它和某个点的距离、和某条直线的距离、和某个圆的距离等等。当然具体需要哪个功能,还要根据具体情况而定。
当然要做好测量,一般还要搭配着寻找直线、寻找正方形、寻找圆的功能。
7、质量检测
质量检测也是机器视觉很重要的一个应用场景。现实的工厂中,大部分的质检都是由人工完成的,但是这种检测效率不高,而且检测的效果完全取决于工人每个人的能力。但是对于机器视觉来说,则不存在这样的问题。
8、分类和识别
分类和识别是由于计算机深度学习的发展,而引入的新功能。传统的机器视觉,大部分都是基于图像本身进行处理。对于更复杂的场景,特别是需要同时进行定位和分类的场景,深度学习具有天然的优势,这个时候yolov5这一类的算法就显得非常实用了。
9、第三方设备的支持
图像处理的结果,最重要是要和其他设备进行通信处理的。这里面的设备通信方式有232、485、can、tcp等等,类型则有io设备、plc、机械手、电脑等等。所以对于上位机来说,拿到图像算法的计算结果之后,一般都是要通过结果送出去继续处理的,特别是给机械设备来处理。
10、脚本的应用
上位机软件的使用者大部分都是fae,或者称之为现场部署工程师。他们不仅仅要处理图像,更多的情况下是软件的部署和应用。所以像halcon这一类的软件,还提供了大量的范例、以及脚本编辑的功能。他们对算法的理解或许不是那么充分,但是他们对于不同算法应该应用到什么场景,这方面积累了大量的经验,具有较明显的优势。
11、最新的发展趋势
传统的图像处理还是以camera为主。不过随着最新的传感器采集设备引入,比如说3d camera、lidar、多线lidar设备,新的算法也可以同时参与进来,这样应用的场景更加丰富,也可以更多的参与到工业生产当中去。
相关文章:

上位机图像处理和嵌入式模块部署(上位机主要功能)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 目前关于机器视觉方面,相关的软件很多。比如说商业化的halcon、vision pro、vision master,当然也可以用opencv、pytorch自…...
【前端工程化面试题】webpack的module、bundle、chunk分别指的是什么?
首先从语法方面 在配置文件中有 module 这个配置项,里面有 rules 选项用来配置各种 loader,还有其他各种选项,参考官网。bundle 和 chunk 在配置文件中是没有这个选项的,但是会出现在配置的值中。 module 模块 指单个文件…...

软件实例分享,家具生产出库管理系统软件教程
软件实例分享,家具生产出库管理系统软件教程 一、前言 以下软件程序教程以 佳易王家具行业生产出库管理系统软件V16.1为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 销售管理——产品状态查询变更,可以根据生产进度变更…...
[uniapp的页面传参]详细讲解uniapp中页面传参的传递方式和接受方式 使用案例 代码注释
目录 一、传递方式1. URL传参2. Storage传参3. Vuex传参4.api传参eventChannel 二、接受方式1. URL传参2. Storage传参3. Vuex传参4.api传参eventChannel 三、使用案例四.提醒 在uniapp中,页面传参是非常常见的需求。本文将详细讲解uniapp中页面传参的传递方式和接受…...

Python实现时间序列分析霍尔特季节性平滑模型(Holt算法)项目实战
说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 霍尔特季节性平滑模型是指数平滑技术的一种扩展形式,由E. S. Holt和P. R. Winters分别独立…...
Rokid Station 进fastboot
前一阵子手里的station开不开机了,反复重启,摸索出进fastboot的方法: 关机状态下同时按电源键下面的确认键(○键),指示灯会进入白色常亮状态,插入电脑会在设备管理器内显示DNL设备(…...
Java支持的默认访问修饰符是什么?
Java支持的默认访问修饰符是没有指定任何访问修饰符,通常被称为“包访问级别”或“默认访问级别”。当一个类成员(包括类、接口、变量以及方法)没有显式地指定任何访问修饰符时,它就会拥有默认访问级别。 在默认访问级别下&#…...

Java使用Documents4j实现Word转PDF(知识点+案例)
文章目录 前言源码获取一、认识Documents4j二、快速集成2.1、pom.xml依赖2.2、word转PDF实现项目目录WordUtils.javaDemo6.java测试效果 参考文章资料获取 前言 博主介绍:✌目前全网粉丝2W,csdn博客专家、Java领域优质创作者,博客之星、阿里…...
CSimplemathproblem ---- 牛客网
题目描述 这一节课,Priest给大家做了一个小测试。 老师给了你两个正整数X, Y。并按照一下规则做运算,求出答案Z。 如果X是Y的因数,则Z等于X Y。否则Z Y - X。 输入描述: 输入两个正整数X, Y。 (1 < X < Y < 100000000000000)。 输…...

[嵌入式系统-27]:RT-Thread -14- 操作系统配置:rtconfig.h文件与menuconfig命令
目录 一、rtconfig.h 1.1 概述 1.2 软硬件资源配置 1.3 功能模块选择 1.4 内核配置详解 1.5 调度器配置 1.6 硬件设备驱动配置 1.7 网络配置 1.8 调试配置 二、menuconfig 2.1 概述 2.2 主要功能 三、RT Thread配置 VS Linux配置 一、rtconfig.h 1.1 概述 rtco…...
C++面向对象程序设计-北京大学-郭炜【课程笔记(一)】
C面向对象程序设计-北京大学-郭炜【课程笔记(一)】 1、引用的概念1.1、引用应用的简单示例1.2、常引用 2、"const"关键字的用法(常量指针/指针常量)3、动态内存分配4、内联函数5、函数重载5.1、什么是函数重载5.2、函数…...
C语言:国家名称按字母表排序
题目描述 输入一个整数n(n<20),表示待输入国家的数量。随后输入n个国家或地区的名称 (名称长度为1~30),要求按字母顺序升序输出。 注意:名称中可能包含空格符。 提示 字符串比较请使用函数: int strcmp(const char* str1&a…...

2/18作业
1. #!/bin/bash function fun() { uidgrep ^ubuntu /etc/passwd | cut -d : -f 3 gidgrep ^ubuntu /etc/passwd | cut -d : -f 4 echo "uid为$uid,gid为$gid" } resultfun echo $result...
书生浦语笔记与作业汇总
第一节笔记 第二节笔记与作业 第三节笔记 第三节作业 第四节笔记 第四节作业 第五节笔记 第五节作业 第六节笔记 第六节作业...
嵌入式培训机构四个月实训课程笔记(完整版)-Linux ARM驱动编程第五天-ARM Linux编程之自动创建节点 (物联技术666)
链接:https://pan.baidu.com/s/1V0E9IHSoLbpiWJsncmFgdA?pwd1688 提取码:1688 驱动程序编写好后,还需要创建设备节点,有两种方式,一是通过mknod命令去手动创建,例如:mknod /dev/hello c 250 0&…...

基于51/STM32单片机的智能药盒 物联网定时吃药 药品分类
功能介绍 以51/STM32单片机作为主控系统; LCD1602液晶显示当前时间、温湿度、药品重量 3次吃药时间、药品类目和药品数量 HX711压力采集当前药品重量 红外感应当前药盒是否打开 DS1302时钟芯片显示当前年月日、时分秒、星期 DHT11采集当前环境温度和湿度 …...

【学网攻】 第(27)节 -- HSRP(热备份路由器协议)
系列文章目录 目录 系列文章目录 文章目录 前言 一、HSRP(热备份路由器协议)是什么? 二、实验 1.引入 实验目标 实验背景 技术原理 实验步骤 实验设备 实验拓扑图 实验配置 实验验证 文章目录 【学网攻】 第(1)节 -- 认识网络【学网攻】 第(2)节 -- 交…...
【实战】二、Jest难点进阶(三) —— 前端要学的测试课 从Jest入门到TDD BDD双实战(七)
文章目录 一、Jest 前端自动化测试框架基础入门二、Jest难点进阶3.mock timers 学习内容来源:Jest入门到TDD/BDD双实战_前端要学的测试课 相对原教程,我在学习开始时(2023.08)采用的是当前最新版本: 项版本babel/core…...

Python编程中的异常处理
什么是异常? 程序错误(errors)有时也被称为程序异常(exceptions),这是每个编程人员都会经常遇到的问题。在过去,当遇到这类情况时,程序会终止执行并显示错误信息,通常是…...
mysql3.7之触发器
1.触发器的定义 触发器是由事件来触发某个操作,这些事件包括INSERT、UPDATE、DELETE事件。所谓事件就是指用户的动作或者触发某项行为。如果定义了触发程序,当数据库执行这些语句时候,就相当于事件发生了,就会自动激发触发器执行…...

python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

【Linux】自动化构建-Make/Makefile
前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具:make/makfile 1.背景 在一个工程中源文件不计其数,其按类型、功能、模块分别放在若干个目录中,mak…...

Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合
作者:来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布,Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明,Elastic 作为 …...

MySQL的pymysql操作
本章是MySQL的最后一章,MySQL到此完结,下一站Hadoop!!! 这章很简单,完整代码在最后,详细讲解之前python课程里面也有,感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...

密码学基础——SM4算法
博客主页:christine-rr-CSDN博客 专栏主页:密码学 📌 【今日更新】📌 对称密码算法——SM4 目录 一、国密SM系列算法概述 二、SM4算法 2.1算法背景 2.2算法特点 2.3 基本部件 2.3.1 S盒 2.3.2 非线性变换 编辑…...
【Java】Ajax 技术详解
文章目录 1. Filter 过滤器1.1 Filter 概述1.2 Filter 快速入门开发步骤:1.3 Filter 执行流程1.4 Filter 拦截路径配置1.5 过滤器链2. Listener 监听器2.1 Listener 概述2.2 ServletContextListener3. Ajax 技术3.1 Ajax 概述3.2 Ajax 快速入门服务端实现:客户端实现:4. Axi…...
第22节 Node.js JXcore 打包
Node.js是一个开放源代码、跨平台的、用于服务器端和网络应用的运行环境。 JXcore是一个支持多线程的 Node.js 发行版本,基本不需要对你现有的代码做任何改动就可以直接线程安全地以多线程运行。 本文主要介绍JXcore的打包功能。 JXcore 安装 下载JXcore安装包&a…...
Qt学习及使用_第1部分_认识Qt---Qt开发基本流程
前言 学以致用,通过QT框架的学习,一边实践,一边探索编程的方方面面. 参考书:<Qt 6 C开发指南>(以下称"本书") 标识说明:概念用粗体倾斜.重点内容用(加粗黑体)---重点内容(红字)---重点内容(加粗红字), 本书原话内容用深蓝色标识,比较重要的内容用加粗倾…...