• OpenCvSharp 学习二 : 目标跟踪


    使用OpenCvSharp实现目标跟踪:

        首先需要有两张图像. 一张为目标物体的图像(object) 别一张是含有这个目标物体的图像(Image). 使用Cv.MatchTemplate()方法在图像中去寻找目标物体 . 得到"一张图" 是一张结果图.这个图并不是简单意义上的图像. 而是寻找的结果. 如果图像的大小为W & H 目标图像的大小为w & h 那个这张结果图的大小为 (W - w + 1) & (H - h + 1).

        最后. 我们使用CV.MinMaxLoc() 方法 . 得到这个结果的左上角的CvPoint与右下角的CvPoint . 这样,我们就可以用这两个数据来做一些有意思的事情

      

    View Code
     1 using System;
    2 using OpenCvSharp;
    3
    4 class Program
    5 {
    6 static void Main()
    7 {
    8 using (CvCapture cap = CvCapture.FromCamera(0))
    9 using (CvWindow win = new CvWindow("CVS231"))
    10 {
    11 while (Cv.WaitKey(10) < 0) {
    12 using (IplImage src = cap.QueryFrame()) // 源图像
    13 {
    14 src.Flip(src,FlipMode.Y);
    15
    16 using (IplImage tpl = IplImage.FromFile("speedlimit55.jpg",LoadMode.Color)) // 目标图像
    17 using (IplImage res = new IplImage(new CvSize(src.Width - tpl.Width + 1, // 结果"图像"
    18 src.Height - tpl.Height + 1),
    19 BitDepth.F32,1))
    20 {
    21 CvPoint minloc , maxloc;
    22 // 使用这个方法 得到查找的结果图
    23 Cv.MatchTemplate(src,tpl,res,MatchTemplateMethod.CCoeff);
    24 // 得到结果中的左上角与右下角
    25 Cv.MinMaxLoc(res,out minloc,out maxloc);
    26 // 我们 主要 使用的是结果的左上角. 然后使用这个左上角 + 目标图像的大小
    27 Cv.Rectangle(src,minloc,new CvPoint(minloc.X + tpl.Width,minloc.Y + tpl.Height),new CvColor(0,255,0),2);
    28
    29 win.Image = src;
    30 }
    31 }
    32 }
    33 }
    34 }
    35 }

    运行结果:

  • 相关阅读:
    WeUI——switch开关转换
    WeUI——单选框
    WeUI——CheckBox表单复选框
    WeUI——表单输入框状态
    WeUI——表单验证码
    详细介绍 C# 中的方法和参数
    C# 中类的基本概念
    C# 中的类型和变量
    学习 C# 从 Hello World 开始吧
    C# 和 .NET Core 的关系
  • 原文地址:https://www.cnblogs.com/easyfrog/p/2358431.html
Copyright © 2020-2023  润新知