上位机图像处理和嵌入式模块部署(插件式软件开发)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

读书的时候,上课的老师一般都会说,软件=数据结构+算法。从功能上面说,这么讲是没有问题的。但是从产品角度说,这么谈是不合适的。对于程序员来说,他们开发软件,如果只是从自己的角度去开发客户需要的功能,而不是从使用者的角度去思考,最终只会开发出一个四不像出来。只有开发者放低自己的姿态,把自己带入到使用者的角色当中去,才能开发出客户需要且合格好用的软件。在这过程中,软件开发的第一原则是稳定,第二原则是处理速度快、性能好,第三原则就是好用。

前一段时间,一个偶然的机会看到了QMacVisual的机器视觉软件,发现它的插件式开发思维非常好。所以初步看了一下它的操作流程,学到很多。

1、插件式开发需要统一的接口

所谓插件式开发,一般要求接口是统一的。这样,就算后期添加了新的代码,也不会对整个软件的主流程造成影响。此外由于接口统一,后续添加新的算法、新的模块,开发人员即使不了解全局软件,也能开发出新的功能。

2、图像处理比较适合插件式开发

图像算法有它自己的特点,就拿机器视觉来说。除了极少数直接对像素进行处理的算法之外,剩下来的算法接口一般就是一个输入,一个输出。输入的是一幅图像,输出的是另外一幅图像。只有在最后输出结果的时候,才会从图像中输出我们想要的信息,比如说长度、宽度、高度、大小、位置、好坏、有没有毛刺等等。在这之前的动作,就跟流水线一样,每一个步骤的输入和输出都是一样的,所以这也为插件的开发打下了一个基础。

3、插件开发有利于使用者的使用

如果不是插件开发,开发的功能很大可能是根据客户现场环境进行定制处理的。但是客户的环境,是多种多样的,很多时候是根本没有办法穷举的。然而如果采用了插件开发之后,就相当于我们提供给客户的功能就是原子功能,客户或者集成商拿到这些原子功能,就可以自由组合、自由搭配,最终搭配出客户自己需要的功能。也就是说,插件开发为这样一种应用模式提供了一种可能。

4、插件开发的软件质量更高

和一般的软件开发相比较,插件开发式的软件,主流程更加简单。因为具体的功能都是由插件来完成的,所以就算出问题,那么插件本身出问题的概率更大。主流程因为比较简单,它只负责不同模块的衔接和调度,本身内容比较少,就算出问题,那也是几个关键点出问题,本身的风险很小的,质量也是比较容易可控的。而且,随着插件开发得越来越多,那么主流程只会越来越稳定,出问题的概率就更低了。

5、方便调试

实际开发的时候,我们还发现,插件式的功能开发往往更加容易调试。因为本身流程简单,输入、输出的接口也是高度统一的,所以如果需要测试,或者是定位客户现场的故障,只需要把当时的input data保存下来就可以。拿到这些input data,我们可以把它copy 到插件当中进行调试,只要拿到的input data没有问题,那么现场的故障几乎可以100%调试出来,这比复杂的大型软件调试,要容易得多。

6、降低了开发人员的能力要求

对于上位机的开发,如果涉及到算法的部分,很多时候都会要求c/c++的开发。但是目前招聘市场上面前端、php、java、app的候选者很多,但是合格的c语言工程师,特别是合格的c++语言工程师,其实很难找到的,或者说即使找到了,用人成本也是非常可观的。所以,与其把重心放在招聘资深的c/c++软件工程师上面,不如优化软件框架,降低软件开发的难度,这样就可以有更多的候选者能够匹配上岗位,加速软件的迭代和开发。因为对于开发者来说,他甚至都不需要知道整个软件的全部流程,仅仅开发插件,就可以保证整个软件按照之前设计的思路,正常地运转起来。

相关推荐
wkm9563 小时前
在arm64 ubuntu系统安装Qt后编译时找不到Qt3DExtras头文件
开发语言·arm开发·qt
学嵌入式的小杨同学3 小时前
【Linux 封神之路】进程进阶实战:fork/vfork/exec 函数族 + 作业实现(含僵尸进程解决方案)
linux·开发语言·vscode·嵌入式硬件·vim·软件工程·ux
加密狗复制模拟5 小时前
破解加密狗时间限制介绍
安全·软件工程·个人开发
智驱力人工智能5 小时前
景区节假日车流实时预警平台 从拥堵治理到体验升级的工程实践 车流量检测 城市路口车流量信号优化方案 学校周边车流量安全分析方案
人工智能·opencv·算法·安全·yolo·边缘计算
小小码农Come on5 小时前
QT开发环境安装
开发语言·qt
小小码农Come on5 小时前
QT内存管理
开发语言·qt
有理想的打工人5 小时前
QT的安装
qt
光羽隹衡6 小时前
计算机视觉——Opencv(角点检测和特征提取)
人工智能·opencv·计算机视觉
啊巴矲6 小时前
小白从零开始勇闯人工智能:计算机视觉初级篇(OpenCV综合实战(上))
人工智能·opencv·计算机视觉
薛不痒6 小时前
计算机视觉opencv之人脸识别1
人工智能·opencv·计算机视觉