使用Python进行机器视觉解决方案原型设计
当前位置:首页 > 技术分享 > 使用Python进行机器视觉解决方案原型设计

使用Python进行机器视觉解决方案原型设计

施努卡机器视觉 2020-11-30 10337 0


使用Python的好处

CVBpy将CVB的强大功能和速度带给了新的用户群,这些用户习惯于使用Python快速获得结果并轻松进行编程。Python是一种免费的,开源的,可解释的高级通用编程语言。易于学习且易于使用,Python是使用最广泛的编程语言之一。最近的一项调查显示,Python不仅是开发人员最喜欢的语言之一,而且还是最受欢迎的语言。它具有可移植性,因此无需担心编译器和硬件,并且可以在嵌入式,Linux和Windows平台上运行。由于它水平高且易于学习,因此可以非常快地完成许多事情,使其具有很高的生产率,因此特别适合于原型制作。已经在许多应用领域中使用了Python框架,包括IoT,机器学习,深度学习和人工智能,这意味着接口可用于各种库。

结合CVB和Python

为了充分利用CVB令人印象深刻的功能,创建优化的CVB Python绑定至关重要。生成Python接口的一般方法是使用现成的工具从C接口生成它。但是,由于Python可以比C做更多的事情,所以这不是最好的方法,因为它忽略了许多强大的Python功能。原则上,最好是从面向对象的更现代,潜在强大的体系结构(如C ++)生成Python绑定器。尽管这是一种改进,但它仍然缺少Python的某些特殊功能,因为生成器采用一种语言并将其压缩为另一种语言,而忽略了这两种语言的一些关键特性。


结果通常包含最小的一组通用功能,这与开发人员所需的功能相去甚远。解决方案是手动创建包装器。尽管乍看之下似乎很复杂,因此能够快速有效地做到这一点。由此产生的CVBpy绑定程序提供对许多特殊Python功能的访问,这些功能可用于CVB的编程和原型制作。这些包括:


显式资源管理。Python负责管理诸如内存或文件之类的资源,而CVBpy支持这一点。这避免了手动释放内存或关闭文件或将这些资源的管理外包的需要。显式资源管理对于涉及大图像的采集或处理以及使用高帧速率和/或生成大量数据并需要大量内存的大量不同设备的成像应用尤其重要。内置文档。Python具有内置文档,因此使用CVBpy,IDE将显示每个功能的文档帮助。这是内置于库本身的,因此无需安装单独的文档。改进的多线程和异步支持手动活动。这允许启动本机线程并使用Python的异步功能,该功能本质上是通过事件处理程序工作的。


稳定的API。借助PEP 384,Python在Python 3的生命周期内提供了稳定的API或ABI(应用程序二进制接口)。这意味着CVBPy将在从V3.5到当前V3.8以及更高版本的所有Python版本上运行。未来的Python 3版本无需进行任何调整。CVBpy提供了与Python的NumPy的接口。NumPy增加了对大型多维数组和矩阵的支持,以及对这些数组进行操作的大量高级数学函数的集合。CVBpy接口允许将从真实设备获取的图像直接传输到NumPy,在该处可以应用在那里开发的任何算法。使用PySide2的UI。成像应用程序需要合适的显示功能以显示原始图像和已开发的任何算法的效果。由于Python本身未附带任何用户界面,因此CVBpy包含了PySide2的接口,该接口是用于创建UI的Python的Qt5包装器。


面向对象,从对象定向的角度来看,CVBpy可以与许多基本类进行交互。访问硬件设备(例如相机)的主要入口点是设备工厂,该工厂还提供对不同类型设备的访问。有一个通用接口可以连接到后面带有实际硬件的视频设备,也可以连接到仅具有控制路径的非流设备。也有带有定义数据的仿真设备-可以是经典媒体文件,也可以是仿真文件格式。


设备可以具有一个或多个流,并且正在开发使用多个流,但是通常至少有一个流可用。在此流上,有一个环形缓冲区,可在其中获取图像。该流提供最新图像以进行处理。图像本身包含多个平面。设备本身具有节点映射,例如用于控制路径的GenAPI节点映射。可以从每个通过XML描述自身的设备获得不同级别的地图,节点和要素。此外,设备上还有一些方便的接口,可以更轻松地访问常用功能。


CVBpy的实际示例,最简单的示例之一是Python“ hello world”程序。这个CVBpy的“ hello world”示例显示了获取大量图像所需的代码(上图)。这是一段很简单的代码。第一步是从设备工厂打开一个模拟设备并从中获取数据流。然后开始流并获取10张图像。检查每张图像的状态以确保其正常,然后打印出图像编号。为了随后进行清理,只需中止采集。


对于更高级的示例,将需要实时显示,以提高响应速度和适应性。UI应用程序需要是多线程的,以允许相机与UI异步运行。还需要对采集硬件进行通用处理,并且为了获得最佳实践,UI应该与逻辑代码分开。


本文链接地址:https://www.schnoka-vts.com/post/129.html
标签:python

取消回复发表评论:


立即定制视觉方案