精华内容
下载资源
问答
  • 物体跟踪
    千次阅读
    2020-05-07 23:12:32

    任务目标

    • 物体跟踪
      • 从视频中获取每一帧图像
      • 图像转换为HSV空间
      • 设置HSV阈值到蓝色范围
      • 获取蓝色物体

    在图像处理中使用较多的是 HSV 颜色空间,它比 RGB 更接近人们对彩色的感知经验。非常直观
    地表达颜色的色调、鲜艳程度和明暗程度,方便进行颜色的对比。

    cv2.inRange()
    作用:设定边界值,超出边界像素值改为0
    lower_blue:阈值的下界(小于这个值,图像像素值置为0)
    upper_blue:阈值的上界(大于这个值,图像像素置为0)

    bitwise_and(roi,roi ,mask=ma1)
    按位“与”操作
    为什么参数中有两个roi
    首先,roi & roi 就是 roi 本身;然后,你可能会问roi和ma1大小一样、数据类型一样,为什么不直接cv2.bitwise_and(roi, ma1)呢?因为roi是彩色图像,三通道的,ma1是单通道,不能直接与。(具体内容参照【推荐】python openCV掩膜的通俗理解
    在这里插入图片描述

    代码实现

    import cv2
    import numpy as np
    cap=cv2.VideoCapture(0)
    while(1):
        # 获取每一帧
        ret,frame=cap.read()
        # 转换到 HSV
        hsv=cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)
        # 设定蓝色的阈值
        lower_blue=np.array([110,50,50])
        upper_blue=np.array([130,255,255])
        # 根据阈值构建掩模
        mask=cv2.inRange(hsv,lower_blue,upper_blue)
        # 对原图像和掩模进行位运算
        res=cv2.bitwise_and(frame,frame,mask=mask)
        # 显示图像
        cv2.imshow('frame',frame)
        cv2.imshow('mask',mask)
        cv2.imshow('res',res)
        k=cv2.waitKey(5)&0xFF
        if k==27:
            break
        # 关闭窗口
    cv2.destroyAllWindows()
    

    实验结果

    在这里插入图片描述

    参考

    RGB、HSV和HSL颜色空间
    图像阈值处理cv2.threshold()函数(python)
    cv2.inRange函数
    【推荐】python openCV掩膜的通俗理解

    更多相关内容
  • [AK]OV7725_7670颜色识别&物体跟踪+舵机跟踪(双轴跟踪)
  • 探讨了多假设跟踪算法(MHT)在多物体检测跟踪系统中的应用方式。该方法采用卡尔曼滤波算法实现跟踪轨迹假设,采用LAP算法实现数据关联,将预测和视频采集测量值结合得到最优跟踪轨迹。实验表明,该方法在实践中达到...
  • camshift算法跟踪运动物体跟踪速度适中,精度很大
  • python 识别物体跟踪

    2018-04-26 13:38:22
    python 识别物体跟踪,需要OPENCV的支持。可以利用视频流或者USB本地摄像机。
  • Meanshift均值漂移算法,图像中的物体进行跟踪定位。
  • OpenTLD,捕食者物体跟踪算法。使用C++实现,不需要Matlab。这个系统能够通过分析物体的运动来完善跟踪算法。你能在很短的时间里教会它跟踪你的手指、面孔或在高速公路上狂颠的轿车。
  • 基于卷积神经网络和核相关滤波的物体跟踪算法,卷积神经网络和相关滤波方向
  • 视觉伺服技术在诸多工业场景中都有相当大的应用前景。...概述了新视觉伺服方法的控制架构,通过动态物体跟踪实验证明了新方法的可行性,并通过性能测试实验说明了新方法在低帧率条件下仍能实现较高精度的视觉伺服。
  • 物体跟踪 程序详解

    2015-08-08 15:28:38
    基于粒子滤波算法的物体跟踪程序,需要结合opencv和GSL
  • 物体跟踪实验与人脸跟踪实验一.预备知识介绍①想要跟踪物体首先要确定物体的位置,利用opencv-python追踪物体位置的方法详见《opencv-python运
  • opencv 运动物体跟踪

    2017-03-13 15:28:19
    opencv 运动物体跟踪
  • 基于FPGA的物体跟踪系统.pdf
  • Blender物体跟踪实战教程

    千次阅读 2021-07-28 19:52:38
    什么是blender物体跟踪? 对于视频后期处理而言,想要在图像中某个物体表面添加效果或新建物体,都需要建立在图像跟踪的前提下,因为我们的视频往往存在机位移动或主体移动,甚至两者皆有,不做跟踪,新建的效果只会...

    什么是blender物体跟踪?

    对于视频后期处理而言,想要在图像中某个物体表面添加效果或新建物体,都需要建立在图像跟踪的前提下,因为我们的视频往往存在机位移动或主体移动,甚至两者皆有,不做跟踪,新建的效果只会固定在某一个地方,手动逐帧调整对于10秒就至少240帧的视频而言也是不现实的事情,所以,学会跟踪很重要。

    而一般来说,我们无论在After Effect、Cinema4D、MAYA、Blender等软件中,默认启用的跟踪模式都是摄像头反求,也即通过画面中物体移动的透视变化来反推摄影机的位置,所以一般在完成跟踪计算后,我们会看到物体处于静止状态,而摄像头在不断地运动。

    显然,摄影机反求适用于机位移动而主体不怎么动的拍摄主题,对于机位基本固定,但物体不断移动的内容而言,摄影机反求带来的问题就是整个新建的3D空间都会移动,而我们此时可能只想要其中某一些跟随移动,而另一些则保持静止或对素材视频中其他物体进行另外的跟踪,这时候就应该使用物体跟踪。

    第零步,建议使用传统相机拍摄的素材

    素材是跟踪信息的来源,而对于大多数3D软件而言,手机拍摄的视频素材有几个关键的缺陷,其一是解析力差,手机的视频优化方向主要在自动色彩映射、自动HDR等方面,而我们进行跟踪操作时经常需要200%甚至300%放大来标定跟踪点,且跟踪计算的依据是图像中的纹理对比度细节,这恰恰是手机视频相对薄弱而相机较为强势的方面。

    其二是编码兼容性一般,以iPhone为例,原生相机拍摄的H.265视频总会出现各种问题,即便是转码至H.264也无法解决,使用第三方相机APP设置H.264拍摄的素材会相对稳定,但依然远比不上传统相机。

    第一步,开启物体跟踪并选择正确的焦距

    在Blender最上方标签页中点击“+”号,选择VFX-Motion Tracking进入跟踪工作面板,导入视频,选择与视频匹配的渲染帧率并预加载到内存后,在右侧“跟踪”栏的“物体”选项卡中新建一个“Object”,这样就能开启物体跟踪模式了。注意,这时候一定要正确填写你拍摄视频素材时所采用的镜头焦距,比如我使用松下GH5S的12-42mm镜头广角端进行拍摄,那么其等效全画幅焦距就是24mm,于是填24mm,具体设置如上图。

    第二步,对物体实施跟踪并解算

    跟踪点应该选择在对比强烈的位置,如下图所示,选择文字边缘、纹理凸出点等等,可以通过右侧“跟踪”栏来查看具体的标记位置并进行微调,这样才能在较少人工干预的情况下完成跟踪。其实任何的跟踪对视频素材都有较高的要求,首先是尽量不要有快速位移,因为这会形成明显的动态模糊,导致跟踪点丢失,只能逐帧手动跟踪,费时费力且准确度会明显下降。其次是尽量避免表面反光,因为表面发光也会导致跟踪点错误判断,虽然手动选择RGB通道可以一定程度缓解这个问题,但也会明显增加工作量。

    跟踪过程中如果某些点断线,就需要手动定位到断线那一帧,G键手动移动到应有的位置后继续跟踪,再断线就反复这一流程,如果需要干预的次数太多,不妨考虑换一个跟踪位置进行尝试。

    物体跟踪完成后跟摄影机反求一样需要进行解算,如上图所示,在跟踪界面的左侧可以进入到解算选项卡,这里可以勾选“关键帧”选项,Blender会自动选取视角差最大的两帧来进行计算,不过有时候自动选取的效果并不一定是最好的,如果你的结算结果误差总是非常高,但查验跟踪效果又没有发现问题,那可能就是关键帧没有选对,这时候可以尝试再次自动选择或干脆手动。

    一般来说,物体跟踪的解算误差在1个像素左右已经算是比较好的,摄影机反求往往要求控制在0.5像素以内,如果更换关键帧后依然有很高的解算误差,建议重新选择跟踪点进行跟踪解算。如果误差并没有特别大,比如3~5个像素,可以通过删除误差值较高的跟踪点,或降低高误差跟踪点解算权重的方法来降低整体解算误差。

    第三步,跟踪点3D标记并加载物体跟踪效果

    在解算完成后,按A全选所有跟踪点,解算选项卡的“几何数据”中点击“网格3D标记”,就能在3D工作区内生成如下图的一个点阵图。这时候按空格键播放会发现它并不会跟随移动,这是因为我们还没有将物体跟踪的解算结果进行加载。

    如下图所示,选择点阵图,并在“物体约束属性”选项卡里添加“物体解算”,物体选择为“Object”,相机则选择“Camera”,再点击“设置反向”,这时候再按空格键,就能看到点阵图跟随图像移动的效果了。

    最后一步,导入想要添加的3D素材

    为什么要将跟踪点导入到3D工作区当中?这是因为物体跟踪的物体位置与摄影机并没有联动关系,我们需要一个准确的位置信息来方便对齐新添加的物体,这些网格标记的跟踪点就是最好的选择。

    完成上一步之后,接下来就是导入或者新建我们想要的物体了,以本文的案例来看,我们的目的是将手里的瓶子替换成一个“雷神之锤”,所以如上图,我将事先做好的“雷神之锤”导入到blender 3D工作区,并从摄影机视角和侧面视角来缩放、旋转对齐,并仔细观察整个视频播放过程中,新建的物体可否对原物体进行完整遮挡。

    最后在合成面板中加入“影片剪辑”模块,并使用“Alpha上叠”模块连接“渲染层”,这样就能在最终渲染中实现想要的图像输出了,当然,为了增加真实性,也需要将本应在新建物体前方的手指等位置抠出并放到最前端,我们的最终效果就基于下图的合成设置而来。

    文章来自blender模型库的博客:https://www.cnblogs.com/blendermx/p/15040073.html

    展开全文
  • OpenCV 物体跟踪

    千次阅读 2020-09-07 00:09:02
    明确任务 利用opencv知识,通过摄像头录像,实时提取带有某个特定颜色的物体,从而实现物体跟踪。 2.需要用到的函数 cv2.VideoCapture(0) 这个函数用来捕获视频,VideoCapture()中参数是0,表示打开笔记本的内置...

    声明

    声明:本系列博客是我在学习OpenCV官方教程中文版(For Python)(段力辉 译)所做的笔记。所以,其中的绝大部分内容引自这本书,博客中的代码也是其配套所附带的代码或书中的代码,侵删。其中部分代码可能会因需要而改动。在本系列博客中,其中包含书中的引用,也包括我自己对知识的理解,思考和总结。本系列博客的目的主要有两个,一个是可以作为我自己的学习笔记,时常复习巩固。第二个是可以为想学习python下的opencv 3 相关知识的朋友提供一些参考。

    正文

    1.明确任务

    利用opencv知识,通过摄像头录像,实时提取带有某个特定颜色的物体,从而实现物体跟踪。

    2.需要用到的函数

    • cv2.VideoCapture(0)
      这个函数用来捕获视频,VideoCapture()中参数是0,表示打开笔记本的内置摄像头,参数是视频文件路径则打开视频。,记得最后要用cap.release()来关闭摄像头。

    • ret,frame=cap.read()
      cap.read()按帧读取视频,ret,frame是cap.read()方法的两个返回值。其中ret是布尔值,如果读取帧是正确的则返回True,如果文件读取到结尾,它的返回值就为False。frame就是每一帧的图像,是个三维矩阵。

    • cv2.cvtColor(image,flag)
      这个函数是一个颜色空间转换函数,flag代表转换方式。

    • cv2.inRange()
      括号里有三个参数,依次是hsv,lower,upper,第一个参数:hsv指的是原图,第二个参数:lower指的是图像中低于这个lower的值,图像值变为0,第三个参数:upperd指的是图像中高于这个upper_red的值,图像值变为0,而在lower~upper之间的值变成255。

    • cv2.bitwise_and()
      bitwise_and()是对二进制数据进行“与”操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制“与”操作,1&1=1,1&0=0,0&1=0,0&0=0

    3.完整代码

    import cv2
    import numpy as np
    
    cap=cv2.VideoCapture(0)
    while(1):
    # 获取每一帧
        ret,frame=cap.read()
    # 转换到 HSV
        hsv=cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)
    # 设定颜色的阈值
        lower_red=np.array([0,43,46])
        upper_red=np.array([10,255,255])
    # 根据阈值构建掩模
        mask=cv2.inRange(hsv,lower_red,upper_red)
    # 对原图像和掩模进行位运算
        res=cv2.bitwise_and(frame,frame,mask=mask)
    # 显示图像
        cv2.imshow('frame',frame)
        cv2.imshow('mask',mask)
        cv2.imshow('res',res)
        k=cv2.waitKey(5)&0xFF
        if k==27:
            break
    cap.release()    #关闭摄像头
    # 关闭窗口
    cv2.destroyAllWindows()
    
    

    运行结果:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    (当时截图时没截好,所以原始图片与前两张不一样)

    4.另外

    怎样找到要跟踪对象的 HSV 值?
    只需要以下代码就可以轻松获得你需要的HSV值:

    import cv2
    import numpy as np
    
    #假设我们想得到绿色的HSV值
    green=np.uint8([[[0,255,0]]])#注意:是RGB,而不是BGR,还有这里是三层括号
    hsv_green=cv2.cvtColor(green,cv2.COLOR_BGR2HSV)
    print(hsv_green)
    
    

    运行结果:

    [[[ 60 255 255]]]
    

    得到这个值后,现在你可以分别用 [H-100,100,100] 和 [H+100,255,255] 做上下阈值。

    感谢观看!

    如有错误,欢迎批评指正!

    展开全文
  • 运动物体跟踪与检测,非常实用的检测方法,不包含卡尔曼滤波等方法。
  • 就是SORT物体跟踪算法要解决的核心问题 SORT关联两个BBox的核心算法是:用IOU计算Bbox之间的距离 + 匈牙利算法选择最优关联结果 SORT算法示意2 物体跟踪与物体检测是两件不同的事 物体跟踪是把物体跟踪预测的BBox与...

    目录

    SORT - SIMPLE ONLINE AND REALTIME TRACKING

    概述

    解析SORT算法代码

    SORT算法的优缺点

    Deep SORT - SIMPLE ONLINE AND REALTIME TRACKING WITH A DEEP ASSOCIATION METRIC

    关联度量(ASSOCIATION METRIC)

    关联算法 Matching Cascade


    SORT - SIMPLE ONLINE AND REALTIME TRACKING

     

    概述

    SORT算法示意2

    SORT跟踪算法到底在干什么?(以单目标跟踪为例说明如下)

    • 假设T1时刻成功跟踪了某个单个物体,ID为1,绘制物体跟踪BBox(紫色)
    • T2时刻物体检测BBox总共有4个(黑色),预测T2时刻物体跟踪的BBox(紫色)有1个,解决紫色物体跟踪BBox如何与黑色物体检测BBox关联的算法,就是SORT物体跟踪算法要解决的核心问题
    • SORT关联两个BBox的核心算法是:用IOU计算Bbox之间的距离 + 匈牙利算法选择最优关联结果
    SORT算法示意2

    物体跟踪与物体检测是两件不同的事

    物体跟踪是把物体跟踪预测的BBox与物体检测的BBox关联,然后用对应的物体检测BBox代表成功跟踪的BBox结果

    以上图为例

    • T1时刻已经成功跟踪了3个检体(不同颜色的BBox代表不同的物体ID)
    • T2时刻除了所有物体检测的新位置BBox(灰色),还要物体跟踪预测的Bbox(非灰的其它不同颜色BBox)与物体检测Bbox(灰色)关联,从而分辨出哪一个物体跟踪的Bbox对应哪一个物体检测的BBox,从而产生T2时刻的物体跟踪BBox结果(包括新增物体跟踪器跟踪T2中新检测到的物体)
    • T3时刻如果被追踪的物体发生了遮挡(红框BBox的物体),那么要继续能找到该物体并追踪 (避免ID Switch)

    物体跟踪有几个主要任务以及它们对应的解决方案

    • 检测-深度学习的各种检测网络来实现物体检测
    • 跟踪预测与关联-Tracking的算法来实现物体追踪(比如 本文介绍的SORT)
    • ID Switch- Tracking的算法来解决遮挡物体(比如 deep SORT)
    • ReID(跨摄像头发现和跟踪同一个物体,避免ID switch) -  比如 deep SORT

    解析SORT算法代码

    代码分析1
    代码分析2
    算法图示
    代码分析3
    代码分析4
    代码分析5
    代码分析6
    代码分析7

    SORT算法的优缺点

    优点缺点

    速度快 

    对于物体遮挡几乎没有处理,导致ID switch 次数很高

    在没有遮挡的情况下准确度很高

    有遮挡的情况下准确度很低

    SORT是一个很粗糙的跟踪算法,所以又有了Deep SORT

     

    Deep SORT - SIMPLE ONLINE AND REALTIME TRACKING WITH A DEEP ASSOCIATION METRIC

     

    关联度量(ASSOCIATION METRIC)

    • 计算公式(1) 
    • 马氏距离计算物体检测Bbox dj和物体跟踪BBox yi之间的距离
    • 注:不使用欧式距离的原因是djyi 的空间域分布不同,欧式距离忽略空间域分布的计算结果不能准确反映两者的真实距离
    • 当两者距离≤特定阈值,则表示两者关联 
    • 但马氏距离依然不能很好的解决物体被长时间遮挡后关联不正确导致ID Switch的问题
    • 计算公式(2)
    • 物体检测BBox dj 通过CNN网络计算对应的128维feature向量rj 称为appearance descriptor
    • 具体的做法是把物体检测BBox dj  对应的图像patch作为下图的CNN输入,输出128维feature向量rj
    Deep Cosine Metric Learning for Person Re-identification

     

    • 对于跟踪器i,为它创建一个集合保留它过去Lk 次成功跟踪后物体检测Bbox对应的Lk 个Feature向量集合,公式(2)是在计算第i个物体跟踪的所有Feature向量和第j个物体检测之间的最小余弦距离(具体含义参考下图)
    • 当两者距离≤特定阈值,则表示两者关联 
      公式(2)的几何解释
      <p>•<span style="color:#000000;">组合计算公式(</span><span style="color:#000000;">1</span><span style="color:#000000;">)和(</span><span style="color:#000000;">2</span><span style="color:#000000;">)作为计算第</span><span style="color:#000000;">i</span><span style="color:#000000;">个物体跟踪和第</span><span style="color:#000000;">j</span><span style="color:#000000;">个物体检测之间关联度量的总公式</span><img alt="" class="has" height="42" src="https://img-blog.csdnimg.cn/20190101201857219.jpg" width="391"></p>
      
      <p>•<span style="color:#000000;">组合距离阈值判断不等式,作为总的判断第</span><span style="color:#000000;">i</span><span style="color:#000000;">个物体跟踪和第</span><span style="color:#000000;">j</span><span style="color:#000000;">个物体检测之间的距离(关联度量)是否关联的总公式<img alt="" class="has" height="83" src="https://img-blog.csdnimg.cn/20190101201925745.jpg" width="211"></span></p>
      </li>
      <li>
      <h2 id="%E5%85%B3%E8%81%94%E7%AE%97%E6%B3%95%20Matching%20Cascade"><a name="t6"></a><a name="t6"></a><span style="color:#000000;">关联算法</span><span style="color:#000000;"> Matching Cascade</span></h2>
      </li>
      

    T是物体跟踪集合

    D是物体检测集合

    1. C矩阵存放所有物体跟踪i与物体检测j之间距离的计算结果
    2. B矩阵存放所有物体跟踪i与物体检测j之间是否关联的判断(0/1)
    3. 关联集合M初始化为{}
    4. 将找不到匹配的物体检测集合初始化为D
    5. 从刚刚匹配成功的跟踪器循环遍历到最多已经有Amax 次没有匹配的跟踪器
    6. 选择满足条件的跟踪器集合Tn
    7. 根据最小成本算法计算出Tn与物体检测j关联成功产生集合[xi,j]
    8. 更新M为匹配成功的(物体跟踪i,物体检测j) 集合
    9. 从U中去除已经匹配成功的物体检测j
    10. 循环
    11. 返回 M U 两个集合
      展开全文
    • 基于FPGA的物体跟踪系统
    • 对视频进行火焰检测,并实现对火焰的跟踪
    • python+opencv+meanshift算法实现物体跟踪, 读取一段视频,并对视频中指定区域的物体进行跟踪
    • 3D物体跟踪总体上是和平面图像跟踪差不多的,设置,包括程序控制,识别多个对象。区别只是目标对象的不同。 总体说明 3D物体跟踪对3D物体的纹理,也就是表面的图案的丰富程度是有要求的,纹理如果是简单的色块组成的...
    • 树莓派视觉小车 -- 物体跟踪(OpenCV)

      千次阅读 多人点赞 2021-09-16 22:13:48
      一、物体跟踪效果展示
    • 通过2D图像跟踪技术和3D物体跟踪技术,用户只需使用一台手机进行拍摄,即可实现海报、卡牌等平面物体以及文物、手办等立体物体的AR效果。尽管近年来2D图像跟踪和3D物体跟踪算法已经取得了很大的进步,但受限于环境等...
    • 代码链接:python+opencv+meanshift算法实现物体跟踪 效果如下: (输入一段视频,调整代码中的 r,h,c,w 四个参数确定到水瓶的位置,你也可以输入自己的视频并尝试调整参数使得方框初始包含想要跟踪的物体) 1. ...
    • 约束置信度匹配用于平面物体跟踪
    • 基于扩展卡尔曼滤波的运动物体跟踪,耿沛,苏小龙,卡尔曼滤波是一种线性最优估计方法,但是实际有很多非高斯分布模型需要观测。本文研究的扩展卡尔曼滤波就很好的解决这一问题,大
    • 图像处理应用程序,使用图像减法检测场景内物体的运动。 该应用程序有两个来源:网络摄像头和avi格式的视频文件。 欲了解更多信息,请访问www.matpic.com
    • 在双视点立体系统中,运动物体跟踪是计算机视觉中一个热门的研究领域。为了精确地获得运动物体的像素点,我们提出了一个新的物体跟踪算法:首先计算运动物体的特征点,然后对其进行匹配,最后连接匹配的特征点并形成轨迹...
    • 结合粒子滤波技术,提出一种基于加权颜色直方图的彩色物体跟踪算法。将目标颜色直方图作为目标的颜色模型,同时考虑其大小及像素点的位置对颜色分布的影响,将颜色直方图进行加权处理,使模型对区域特征描述更加合理...
    • KinectA是通过Kinect Sensor进行运动跟踪的应用程序-包括手,骨骼和物体跟踪。 该软件是为满足媒体艺术家和设计师的需求而开发的。 它提供了具有多种功能的布局清晰的界面。 跟踪的信息可以通过OSC发送到其他硬件和...

    空空如也

    空空如也

    1 2 3 4 5 ... 20
    收藏数 40,902
    精华内容 16,360
    关键字:

    物体跟踪