首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >OpenCV工作流SDK实现卡尺测量

OpenCV工作流SDK实现卡尺测量

作者头像
OpenCV学堂
发布2026-04-02 21:39:23
发布2026-04-02 21:39:23
850
举报
工作流介绍

OpenCV工作流SDK介绍与下载地址

代码语言:javascript
复制
https://gitee.com/opencv_ai/opencv_workflow

C++SDK配置与演示

下载C++ SDK开发包,下载地址

代码语言:javascript
复制
https://gitee.com/opencv_ai/opencv_workflow

解压缩开发包

图片
图片

打开VS2022,配置包含目录

代码语言:javascript
复制
D:\vcworkspaces\oemts_workflow_engine_lib\include\oemts

配置库目录

代码语言:javascript
复制
D:\vcworkspaces\oemts_workflow_engine_lib\lib

直接编译提供的示例代码,然后把oemts_workflow_engine.dll 文件放到项目生成目录下即可运行exe,运行结果如下:

图片
图片

完整的示例代码如下:

图片
图片

特别提醒:

请先配置好OpenCV4.10 C++依赖。

卡尺测量演示

首先配置好开发环境,OpenCV工作流最新版本依赖于OpenCV4.10,所以先配置好OpenCV4.10 C++ 开发环境,然后配置好OpenCV工作流。首先加载工作流配置文件

代码语言:javascript
复制
// load opencv workflow sdk
std::shared_ptr<QTongCoreCVWorkFlow> engine(new QTongCoreCVWorkFlow());
bool succ = engine->initWorkFlow("D:/python/opencv_workflow/qtong_caliper.vm", 
"ba8e9ea82fb37f1722ad2d9f4962e7e4");
if (!succ) {
  std::cout << "Could not load workflow file here..." << std::endl;
  return -1;
}

然后加载测试图像并显示

代码语言:javascript
复制
//  image view
cv::Mat frame = cv::imread("D:/images/vm_test/caliper_test.png");
cv::imshow("OpenCV学堂-卡尺演示", frame);

调用卡尺测量SDK实现卡尺测量

代码语言:javascript
复制
// measure with caliper sdk
cv::Mat result;
cv::Vec4i data(291, 254, 118, -1);
engine->run_measure(frame, result, data);

调用查询SDK获取测量结果

代码语言:javascript
复制
// query measure circle information
cv::Vec3i cinfo = engine->getMeasureCircleInfo();
std::cout << "圆心 X: " << cinfo[0] <<" 圆心 Y: "<<cinfo[1]<< std::endl;
std::cout << "圆半径: " << cinfo[2] << std::endl;

完整的源代码如下:

代码语言:javascript
复制
#include "main_workflow.h"
#include <iostream>
#include <fstream>"
int main(int argc, char** argv) {
// load opencv workflow sdk
  std::shared_ptr<QTongCoreCVWorkFlow> engine(new QTongCoreCVWorkFlow());
  bool succ = engine->initWorkFlow("D:/python/opencv_workflow/qtong_caliper.vm", 
                      "ba8e9ea82fb37f1722ad2d9f4962e7e4");
  if (!succ) {
    std::cout << "Could not load workflow file here..." << std::endl;
    return -1;
  }
  // image view
  cv::Mat frame = cv::imread("D:/images/vm_test/caliper_test.png");
  cv::imshow("OpenCV学堂-卡尺演示", frame);
  // measure with caliper sdk
  cv::Mat result;
  cv::Vec4i data(291, 254, 118, -1);
  engine->run_measure(frame, result, data);
  // query measure circle information
  cv::Vec3i cinfo = engine->getMeasureCircleInfo();
  std::cout << "圆心 X: " << cinfo[0] <<" 圆心 Y: "<<cinfo[1]<< std::endl;
  std::cout << "圆半径: " << cinfo[2] << std::endl;
  cv::imshow("OpenCV学堂-卡尺效果", result);
  cv::waitKey(0);
  cv::destroyAllWindows();
  return 0;
}

运行结果如下:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-11-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OpenCV学堂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档