前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器视觉如何以前后端分离来搭建一个项目

机器视觉如何以前后端分离来搭建一个项目

作者头像
周旋
发布2024-03-27 12:29:55
740
发布2024-03-27 12:29:55
举报
文章被收录于专栏:行走的机械人行走的机械人

大家好,我是周旋。今天讲一下什么是前后端分离呢。

额,其实就是前端与后端分离(大废话!),前端只负责界面交互,后端负责功能实现。

1、降龙项目是如何进行前后端分离的

这么空讲概念没有用,我们以降龙算法项目为例,降龙算法项目其实就是前后端分离的。

整个项目的文件夹结构如上图所示,基本所有开源项目也是上面这样的构成:

  1. 会有一个文档文件夹,用来存储所有的开发介绍等等。
  2. 一个打包好的点击即可执行的二进制文件夹,里面有我们降龙算法项目的可执行exe和所有动态库,大家拿到项目源码后直接点击即可运行查看效果。
  3. src源码文件夹,我们所有的源码文件都在这个文件夹中。
  4. tutorial项目教程文件,里面包含了该项目的所有文档教程。
  5. Readme文件,包含项目的基本介绍和readme信息。

当然,上面这些和前后端分离没有一毛钱关系,我们只是介绍了下一个项目的文件夹应该有哪些构成。

而下图就是我们的前后端分离部分了,在我们的src源码文件夹内,包含了我们所有的前端代码和后端代码:

  • 前端:就是我们的降龙软件界面,即C++/QT部分
  • 后端:就是我们的降龙算法部分,即C++/CMake部分

降龙项目整个软件构成如下图所示:

我们的软件框架部分以及插件部分,统称为前端,而算法动态库,则成为后端。现在可以理解何为前后端分离了吧?

如果没理解,没关系,继续往下看。

如上图所示,就是没有加载任何插件的降龙软件本身,包括了日志功能、缩略图功能、插件加载功能、插件运行功能等上层功能,属于前端部分。而算法本身的执行,均位于插件内部。

上图是加载了算法插件之后的降龙界面。算法插件加载了降龙算法动态库,然后算法插件的界面负责了算法参数的配置与运行图像的展示,所以算法插件也属于前端部分,负责用户交互。而算法库,则属于后端,负责纯粹的算法功能。

也就是说,我们称软件框架部分和插件,都为前端,而算法库,则成为后端。

2、为什么要前后端分离

前后端分离有若干的好处。

  • 首先是代码解耦合,前端界面只负责逻辑界面交互,后端负责算法,实现了项目前后端的松耦合,前端后端之间只负责实现各自的接口即可。
  • 最大的好处,就是将算法部分独立拆解出来,这样降龙算法动态库,就不仅仅只能由降龙软件界面来使用了,以后开发其它软件,例如以后开发一个拖拉拽平台界面,那么我降龙算法项目就可以直接复用了。
  • 最后还有一个好处,就是大家学习起来也方便,不至于所有的代码都耦合在一起。学的时候能更清晰友好。

总之,前后端分离是非常有必要的,也是软件开发最基础的一个思想之一,大家做项目时,也应该注意前后端的分离和代码之间的解耦合,培养正确的软件思维。

3、机器视觉中常用的前后端分离方式

机器视觉行业的软件,上位机因为功能都是专机专用,所以可能所有代码不会讲究解耦合,直接所有功能都写在一起了。

但在大型的拖拉拽平台软件中,前后端分离是必不可少的。

例如业内最常见的,就是由C#做前端软件的界面和框架部分,后端功能由C++来做,以动态库的形式提供给前端,由前端C#调用C++动态库来实现前后端分离。那算法库呢?算法库也是独立的一个动态库部分,由对应的后端C++动态库来调用。

举个例子,例如下图的架构:

可以看出和我们最上面的那张降龙算法项目架构的图有什么区别吗?其实中间橙色的后端C++动态库,和我们降龙项目的插件这一层是同样的作用,都是负责将算法接入到我们的软件框架之中,并定义算法的交互界面。区别仅是使用到的技术不同。

再深入讲一下!记得点赞收藏。这两者技术有何不同?

两者都负责将算法接入到我们的软件框架之中,并定义算法的交互界面。技术不同在哪里呢。QT的插件机制,使得我们可以直接用QWidget来定义我们的算法参数配置界面,使用起来非常方便,这得益于QT强大的插件机制。而我们使用C++动态库来封装算法库呢,就无法直接生成参数配置界面了。需要借助一些技术手段。

那要如何实现呢?

一般都会采用json或者xml这种序列化配置语言,来定义我们的算法配置界面,然后当前端C#框架加载我们的动态库时,采用反射或者其它技术形式来解析json或者xml序列化配置文件,进而动态的生成我们算法的参数配置界面。这其实就是整个机器视觉行业平台软件框架的实现最常见的套路了。

能看出来,如果使用QT的话,确实非常方便强大,可以省去很多步骤。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-03-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 周旋机器视觉 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档