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

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱: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++软件工程师上面,不如优化软件框架,降低软件开发的难度,这样就可以有更多的候选者能够匹配上岗位,加速软件的迭代和开发。因为对于开发者来说,他甚至都不需要知道整个软件的全部流程,仅仅开发插件,就可以保证整个软件按照之前设计的思路,正常地运转起来。

相关推荐
知舟不叙12 小时前
基于OpenCV的图像增强技术:直方图均衡化与自适应直方图均衡化
人工智能·opencv·计算机视觉·图像增强
刃神太酷啦13 小时前
聚焦 string:C++ 文本处理的核心利器--《Hello C++ Wrold!》(10)--(C/C++)
java·c语言·c++·qt·算法·leetcode·github
十五年专注C++开发1 天前
Qt .pro配置gcc相关命令(三):-W1、-L、-rpath和-rpath-link
linux·运维·c++·qt·cmake·跨平台编译
Cai junhao1 天前
【Qt】Qt控件
开发语言·c++·笔记·qt
uyeonashi1 天前
【QT系统相关】QT网络
开发语言·网络·c++·qt
Simple_core1 天前
Qt3d中的材质--PBR材质
qt·3d·材质
我真不会起名字啊2 天前
Qt如何生成和使用DLL动态链接库
开发语言·qt
小草cys2 天前
先理解软件工程,再谈AI辅助研发
人工智能·软件工程
whoarethenext2 天前
使用C/C++的OpenCV 构建人脸识别并自动抓拍系统
c语言·c++·opencv
lansye2 天前
侃侃AI编程
开发语言·qt·ai编程