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” 我们一直在不断践行中……