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

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

相关推荐
鹅毛在路上了4 分钟前
C++, ffmpeg, libavcodec-RTSP拉流,opencv实时预览
c++·opencv·ffmpeg
Monkey的自我迭代2 小时前
多目标轮廓匹配
人工智能·opencv·计算机视觉
张子夜 iiii6 小时前
实战项目-----在图片 hua.png 中,用红色画出花的外部轮廓,用绿色画出其简化轮廓(ε=周长×0.005),并在同一窗口显示
人工智能·pytorch·python·opencv·计算机视觉
牵牛老人6 小时前
Qt C++ 复杂界面处理:巧用覆盖层突破复杂界面处理难题之一
数据库·c++·qt
ChindongX7 小时前
CString(MFC/ATL 框架)和 QString(Qt 框架)
qt·mfc
清朝牢弟8 小时前
Win系统下配置PCL库第一步之下载Visual Studio和Qt 5.15.2(超详细)
c++·qt·visual studio
QT 小鲜肉8 小时前
【QT随笔】结合应用案例一文完美概括QT中的队列(Queue)
c++·笔记·qt·学习方法·ai编程
AI 嗯啦9 小时前
计算机视觉----opencv----身份证号码识别案例
人工智能·opencv·计算机视觉
星期天要睡觉9 小时前
计算机视觉(opencv)——基于模板匹配的信用卡号识别系统
opencv·计算机视觉
荼蘼11 小时前
OpenCV 高阶 图像金字塔 用法解析及案例实现
人工智能·opencv·计算机视觉