.net中opencv库EmguCV的使用

293 阅读1分钟

EmguCV 项目介绍

github.com/emgucv/emgu… 开源

对 OpenCV(一个开源的计算机视觉和机器学习软件库)进行了封装 , 提供对 OpenCV 函数的直接访问 。OpenCV 的原生 Api 是 C/C++的

支持的操作

  • 图像处理:图像的基本操作、滤镜应用、颜色空间转换等。
  • 计算机视觉:物体检测、特征提取、模式识别等。
  • 机器学习:支持向量机(SVM)、决策树、神经网络等算法的实现。
  • 视频分析:视频捕捉处理、运动检测、对象追踪等。
  • 相机校准和3D重建:用于立体视觉和深度图像的生成。

应用场景,各种需要图像处理和计算机视觉功能的应用程序,例如:

  • 安全监控系统中的人脸识别和运动检测。
  • 医疗图像分析,如自动诊断和图像增强。
  • 工业视觉系统,用于产品质量检测和自动化装配线控制。
  • 交互式艺术和广告,利用视觉跟踪创造动态响应的作品。

示例:使用EmguCV 库找到屏幕中某个按钮

screen、template 都是Image 类型,

// 捕获屏幕图像
var screen = CaptureScreen();
// 加载模板图像
var template = new Image<Bgr, byte>(templatePath);

// 在屏幕截图中使用模板匹配
using var result = screen.MatchTemplate(template, TemplateMatchingType.CcoeffNormed);
double minVal = 0, maxVal = 0;
Point minLoc = new(), maxLoc = new();
// 找到匹配度最高的位置
CvInvoke.MinMaxLoc(result, ref minVal, ref maxVal, ref minLoc, ref maxLoc);

// 如果找到了足够好的匹配,则执行点击
if (maxVal >= 0.5) // 设置匹配阈值为0.8
{
    // 计算点击点(模板中心位置)
    var clickPoint = new Point(maxLoc.X + template.Width / 2, maxLoc.Y + template.Height / 2);

    //这个ponit就是匹配的位置,可进行后续操作...
}