【零代码研发】OpenCV实验大师工作流引擎C++ SDK演示

简介: 【零代码研发】OpenCV实验大师工作流引擎C++ SDK演示

OpenCV开发痛点

传统图像算法开发最好的开源解决方案是OpenCV视觉库,但是OpenCV中收录了2000+的传统算法,包含上百个模块。实际常用的只有二十几个模块里面的相关算法与算子在工程项目中会被高频使用,掌握这些模块,就能够像拼积木跟玩乐高一样,设计不同的传统图像处理算法流程,完成不同图像预处理与图像分析、模板匹配等操作。但是对于OpenCV开发者来说,每次项目开发都要重写大量代码,开发效率依然低下,项目试错成本依然很高,交付效率仍然不高,OpenCV在快速交付项目上面临难题。


OpenCV实验大师工具软件

现在这道难题的解决出现了曙光,OpenCV实验大师工具软件 支持零代码设计OpenCV算法工程流程,保存工作流程,快速实现OpenCV算法设计与流程验证,帮助OpenCV开发者提升开发效率。


正所谓 “行百里者半九十”,OpenCV实验大师工具软件解决了OpenCV算法设计与流程验证的第一道门槛,但是在工作流设计与客户端上位机软件集成调用,依然存在OpenCV开发鸿沟,如今OpenCV实验大师工作流引擎 C++ SDK 完成了这最后一关,实现了OpenCV算法开发从设计、工作流验证、工作流导出、工作流C++部署运行的完整闭环。

图片

我可以很自豪的说,80%的OpenCV开发工作不用写一行代码就可以实现与C++ QT等上位机集成,OpenCV开发的工作效率将提升十倍,绝大数OpenCV可以完成的应用场景中,都可以实现OpenCV算法零代码极速交付。

C++工作流引擎支持

已经QT实现的一个简单OpenCV实验大师工作流引擎集成应用界面演示程序,就可以零代码支持以下功能:

-找圆
-找线段
-找Blob
-找角点
-模板匹配
-颜色识别
-廓分析
-面积测量
-形态学操作
-图像增强
-色彩转换

演示代码非常简单,首先加载工作流程设计文件,然后在调用工作流引擎C++ 接口,三行代码即可实现上述全部操作。运行工作流的QT C++ 代码实现如下:

void MainWindow::run_workflow() {
    std::cout<<"run workflow engine here..."<<std::endl;
    if(image_data_path->text().isEmpty() || vm_file_path->text().isEmpty()) {
            QMessageBox::warning(this, "Warning!", "Failed to open the ONNX model...");
            return;
    }
    std::string image_file = image_data_path->text().toStdString();
    std::string vm_file = vm_file_path->text().toStdString();
    runlog_txt_editor->append("工作流文件: " + vm_file_path->text());
    runlog_txt_editor->append("输入图像: " + image_data_path->text());

    std::shared_ptr<MainWorkFlow> engine(new MainWorkFlow());
    engine->initWorkFlow(vm_file);
    cv::Mat frame = cv::imread(image_file);

    std::vector<std::string> loginfos;
    cv::Mat result;
    engine->run_workflow(frame, result, loginfos);

    for(auto one_info : loginfos) {
        runlog_txt_editor->append(QString::fromLocal8Bit(one_info.c_str()));
    }
    runlog_txt_editor->append("运行完成: " + image_data_path->text());
    cv::Mat image;
    cv::cvtColor(result, image, cv::COLOR_BGR2RGB);
    QImage img = QImage(image.data, image.cols, image.rows, image.step, QImage::Format_RGB888);
    img = img.scaled(QSize(640, 640), Qt::KeepAspectRatio);
    QPixmap mp;
    mp=mp.fromImage(img);
    target_image_label->setAlignment(Qt::AlignCenter);
    target_image_label->setPixmap(mp);
}

各种工作流运行结果如下:

从此OpenCV开发效率提升数倍,为公司项目交付轻松节省大量人力成本,提升项目交付能力。OpenCV实验大师的愿景 “Make OpenCV Development Easy” 我们一直在不断践行中……






























相关文章
|
机器学习/深度学习 算法 开发工具
【四箭齐发】OpenCV实验大师工作流引擎SDK
【四箭齐发】OpenCV实验大师工作流引擎SDK
431 1
【四箭齐发】OpenCV实验大师工作流引擎SDK
|
机器学习/深度学习 算法 Ubuntu
十年OpenCV开发以后发布的作品 - OpenCV实验大师
十年OpenCV开发以后发布的作品 - OpenCV实验大师
340 2
|
存储 搜索推荐 C++
C++课程设计实验杭州电子科技大学ACM题目(中)
C++课程设计实验杭州电子科技大学ACM题目(中)
313 1
|
存储 JavaScript 前端开发
程序与技术分享:C++程序设计实验考试准备资料(2019级秋学期)
程序与技术分享:C++程序设计实验考试准备资料(2019级秋学期)
|
存储 人工智能 测试技术
C++课程设计实验杭州电子科技大学ACM题目(下)
C++课程设计实验杭州电子科技大学ACM题目(下)
311 0
|
编译器 C++ 开发者
【C++篇】深度解析类与对象(下)
在上一篇博客中,我们学习了C++的基础类与对象概念,包括类的定义、对象的使用和构造函数的作用。在这一篇,我们将深入探讨C++类的一些重要特性,如构造函数的高级用法、类型转换、static成员、友元、内部类、匿名对象,以及对象拷贝优化等。这些内容可以帮助你更好地理解和应用面向对象编程的核心理念,提升代码的健壮性、灵活性和可维护性。
|
编译器 C++ 容器
【c++11】c++11新特性(上)(列表初始化、右值引用和移动语义、类的新默认成员函数、lambda表达式)
C++11为C++带来了革命性变化,引入了列表初始化、右值引用、移动语义、类的新默认成员函数和lambda表达式等特性。列表初始化统一了对象初始化方式,initializer_list简化了容器多元素初始化;右值引用和移动语义优化了资源管理,减少拷贝开销;类新增移动构造和移动赋值函数提升性能;lambda表达式提供匿名函数对象,增强代码简洁性和灵活性。这些特性共同推动了现代C++编程的发展,提升了开发效率与程序性能。
686 12
|
编译器 C语言 C++
类和对象的简述(c++篇)
类和对象的简述(c++篇)
|
设计模式 安全 C++
【C++进阶】特殊类设计 && 单例模式
通过对特殊类设计和单例模式的深入探讨,我们可以更好地设计和实现复杂的C++程序。特殊类设计提高了代码的安全性和可维护性,而单例模式则确保类的唯一实例性和全局访问性。理解并掌握这些高级设计技巧,对于提升C++编程水平至关重要。
377 16
|
人工智能 机器人 编译器
c++模板初阶----函数模板与类模板
class 类模板名private://类内成员声明class Apublic:A(T val):a(val){}private:T a;return 0;运行结果:注意:类模板中的成员函数若是放在类外定义时,需要加模板参数列表。return 0;
394 0