python开发工业机器人视觉系统_如何利用开源软件开发机器人视觉系统?
机器人视觉应用程序可以带来一系列复杂的需求,但开源库可以为几乎所有需求提供解决方案。开发人员可以找到从基本的图像处理和对象识别再到运动规划和避免碰撞的开源软件包 。另外,还有有一些关键的开源图像处理软件包,可以帮助开发人员实现复杂的机器人系统。
在可用的开源软件包中,OpenCV可能是使用最广泛、功能最丰富的。OpenCV分发版实现了超过2500种算法,通过一系列模块处理图像处理需求,其中包括以下内容:
core,定义所有其他模块使用的基本数据结构和函数;
imgproc,提供图像处理功能,包括线性和非线性图像滤波、几何图像变换、颜色空间转换、直方图等;
video,支持运动估计,背景减法和对象跟踪算法;
calib3d,提供基本几何算法,摄像机校准,物体姿态估计等;
features2d,提供特征检测器,描述符和描述符匹配;
objdetect,提供对象和预定义类实例的检测;
OpenCV使用c++编写,支持c++、Python、Java和Matlab接口,支持Windows、Linux、Android和Mac OS。OpenCV除了支持单指令、多数据(SIMD)指令集外,还通过GPU模块为许多功能提供基于cuda的GPU加速,通过ocl模块提供OpenCL加速。最近发布的OpenCV 4.0带来了许多性能改进和功能,包括流行的Kinect融合算法的实现。
就其功能而言,OpenCV可能需要一个学习过程,这超出了希望使用机器人视觉快速移动的开发人员的耐心。对于这些开发人员,基于python的SimpleCV也可能是个不错的选择。SimpleCV构建于OpenCV之上,它提供了高级机器人视觉开发人员所需的功能,但也提供了一个可访问的框架,帮助经验较少的开发人员使用简单的Python函数调用来探索基本的机器视觉功能。例如,开发人员可以使用SimpleCV image类中的一个简单内置方法(下面清单中的img. binalize())快速实现常用的函数,比如图像阈值化,最后显示如图1所示的结果。
from SimpleCV import Image, Color, Display
# Make a function that does a half and half image. def halfsies(left,right):
result = left
# crop the right image to be just the right side. crop = right.crop(right.width/2.0,0,right.width/2.0,right.height) # now paste the crop on the left image.
result = result.blit(crop,(left.width/2,0))
# return the results.
return result
# Load an image from imgur.
img = Image('http://i.imgur.com/lfAeZ4n.png') # binarize the image using a threshold of 90
# and invert the results.
output = img.binarize(90).invert()
# create the side by side image.
result = halfsies(img,output)
# show the resulting image.
result.show()
# save the results to a file.
result.save('juniperbinary.png')
图1.上面列出的Python代码的结果(来源:SimpleCV)
除了基本的图像处理功能外,OpenCV和SimpleCV还实现了许多高级图像处理算法,机器人系统需要处理对象或在物理环境中安全运行。在许多这些计算中使用的基本数据结构之一是点云 – 表示对象的多维数据点的集合(图2)。从相机获取,对象的点云用于基本的机器人操作,例如对象识别,对齐和拟合。对于使用点云,点云库(PCL)[源代码]实现了过滤,拟合,关键点提取,分割等算法。
图2.基本环面的点云数据集。
python开发工业机器人视觉系统_如何利用开源软件开发机器人视觉系统?相关推荐
- 嵌入式linux系统移植的四大步骤_如何移植开源软件到嵌入式Linux系统
我们知道,在PC机Linux上,安装开源软件,一般来讲,大多是如下几个步骤就搞定了. tar -xzf open_source_software.tar.gz cd open_sourc ...
- 在云中利用开源软件进行开发以提高创新能力
企业可以在自己的云平台上利用开源软件开发应用程序以提高创新能力,而无需为创新支付更多的费用. 企业可以在自己的云平台上利用开源软件开发应用程序以提高创新能力,而无需为创新支付更多的费用. 在大多数企业 ...
- php如何开发网络电话,利用开源软件30分钟搭建自己的voip网络电话系统V1.1
Author:高进波 Time:2010-05-08 利用开源软件30分钟搭建自己的voip网络电话系统V1.1 大家可以根据以下文档在30分钟内就能搭建一个功能强大的voip网络电话系统,在此基础上 ...
- 系统架构师论文-论软件开发平台的选择与应用
论软件开发平台的选择与应用 -银行中间业务系统 [摘要] 本文讨论选择新软件开发平台用于重新开发银行中间业务系统.银行中间业务系统是指银行通过与企事业单位.机关团体的合作,为客户提供金融服务的系统.X ...
- openmv c语言源码,【国外开源】STM32 机器人视觉摄像机OpenMV Cam设计(硬件+固件源码等)...
OpenMV Cam概述: OpenMV项目旨在通过开发开源的低成本机器视觉摄像机,为业余爱好者和制造商提供机器视觉.OpenMV项目于2015年成功通过Kickstarter资助.第一代OpenMV ...
- 利用开源软件30分钟搭建自己的voip网络电话系统V1.1
利用开源软件30分钟搭建自己的voip网络电话系统V1.1 Posted on 2010 年 5 月 8 日by 高进波 Author:高进波 Time:2010-05-08 利用开源软件 ...
- 从开源软件开发中体会到的心得
Mitchell Hashimoto 是一名开源软件工程师.由他托管到 GitHub 上的 开源项目 Vagrant,是一个用于创建和部署虚拟化开发环境的工具.近日,Mitchell撰文讲述了在开发 ...
- 想做开源软件开发谁能带一下呀
2019独角兽企业重金招聘Python工程师标准>>> 想做开源软件开发谁能带一下呀 转载于:https://my.oschina.net/u/200898/blog/130024
- 开源软件开发导论第三次作业——openKylin RISC-V系统启动优化 proposal
这个作业属于这个课程:https://gitcode.net/csdn/intro-ossd/ 这个课程<开源软件开发导论> 的课程计划在这里: plan/0.md · master · ...
最新文章
- 快应用之手摸手,跟我走(1)
- 快速接入 GitHub、QQ 第三方登录方式
- npm install 报错 :stack Error: Can't find Python executable python
- 文档加载状态_我们如何确定技术文档的状态?
- Spring StringUtils类中几个有用的字符串处理方法
- pandas将数组写入csv新增一列
- C语言读取文件输入输出
- 普林斯顿微积分读本篇十五:积分方法
- Windows下安装libiconv库教程(转换字符编码库)
- 43. Pandas查询数据的简便方法df.query
- Excel如何删除空白行
- elasticsearch 支持拼音检索
- golang学习之五:error、painc、recover
- Linux学习之计划任务(at、batch、crontab)篇
- go 操作 kafka 实现发送和订阅
- 西游之路——python全栈——django中orm的使用(1)
- 蒲公英wifi怎么卸载干净_蒲公英WiFi广告怎么彻底删除
- cmd/bat 批处理文件(干货)
- The bean 'llWebSocketHandler' could not be injected because it is a JDK dynamic proxy that implemen
- Java程序员的认证--SUN认证