精华内容
下载资源
问答
  • opencv物体追踪
    2022-08-12 16:51:29

            From sztu 自动化专业的小菜鸡。

            本篇将介绍计算机视觉的物体追踪,基于python的opencv。

            实战阶段,运用opencv内置的函数实现具体的物体追踪,这儿采用的原理是截取第一帧选取所要追踪的物体,去具体追踪它。

    1.代码展示

    import cv2
    cap = cv2.VideoCapture(0)
    #tracker = cv2.legacy.TrackerMOSSE_create()
    tracker = cv2.legacy.TrackerCSRT_create()
    success,img = cap.read()
    bbox = cv2.selectROI("Tracking",img,False)
    tracker.init(img,bbox)
    def drawBox(img,bbox):
        x,y,w,h = int(bbox[0]),int(bbox[1]),int(bbox[2]),int(bbox[3])
        cv2.rectangle(img,(x,y),((x+w),(y+h)),(255,0,255),3,1)
        cv2.putText(img, "Tracking", (75, 75), cv2.FONT_HERSHEY_COMPLEX, 0.7, (0, 255, 0), 2)
    while True:
        timer = cv2.getTickFrequency()
        success,img = cap.read()
        success,bbox = tracker.update(img)
        print(bbox)
        if success:
            drawBox(img,bbox)
        else:
            cv2.putText(img,"Lost", (75, 75), cv2.FONT_HERSHEY_COMPLEX, 0.7, (0, 0, 255), 2)
        fps = cv2.getTickFrequency()/(cv2.getTickCount()-timer)
        cv2.putText(img,str(int(fps)),(75,50),cv2.FONT_HERSHEY_COMPLEX,0.7,(0,0,255),2)
        cv2.imshow("1",img)
    
        if cv2.waitKey(1)&0xff == ord('q'):
            break

            这儿也不在详细讲解代码,具体有关可以查看博主前面几篇博客。

    运行结果:

    基于opencv实现追踪物体的功能

    2.总结

            物体追踪是opencv里面一个比较常用且实用的功能,大家下去可以自行写一下其代码。

    更多相关内容
  • Python-openCV物体追踪

    千次阅读 2020-01-03 22:11:50
    使用Python+opencv物体追踪,也是采用了颜色追踪的方法 利用将一副图像从BGR转换到HSV,可以利用这一个点来提取某个特定颜色的物体。在HSV颜色空间中要比BGR空间中更容易显示特定颜色。在我们的程式中,我们提取的...

    使用Python+opencv的物体追踪,也是采用了颜色追踪的方法

    利用将一副图像从BGR转换到HSV,可以利用这一个点来提取某个特定颜色的物体。在HSV颜色空间中要比BGR空间中更容易显示特定颜色。在我们的程式中,我们提取的是一个蓝色的物体。下面就是需要做的几步:
    * 从视频中获取每一帧图像
    * 将图像转换到HSV空间
    * 设置HSV阈值到蓝色范围
    * 获取蓝色物体,当然我们还可以做其他我们想做的事情
    下面就是代码:

    import cv2
    import numpy as np
    cap = cv2.VideoCapture(0) #打开摄像头
    while True:
    	ret,frame = cap.read()
    	hsv = cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)
    	lower_blue = np.array([100,50,50])
    	upper_blue = np.array([130,255,255])
    	#设置蓝色的HSV阈值
    	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(2)
    	if k == 27:
    		break
    #关闭窗口
    cv2.destroyAllWindows()
    

    在这里插入图片描述

    展开全文
  • 不同与之前的背景分割的追踪方法,MeanShift从背景以及前景物体两方面进行建模。 在程序一开始设定感兴趣的区域,并初始化滑动窗口用于后续的绘制。利用计算的直方图进行反映射,越亮的区域表示感兴趣的区域(即...

    不同与之前的背景分割的追踪方法,MeanShift从背景以及前景物体两方面进行建模。

    在程序一开始设定感兴趣的区域,并初始化滑动窗口用于后续的绘制。利用计算的直方图进行反映射,越亮的区域表示感兴趣的区域(即希望追踪的区域)

    程序如下,需要修改你感兴趣的区域的图像的大致位置。

    其余函数各参数的含义均已经注释。

    # 在之前的背景差分检测物体中,只是对背景建立某种模型,一旦摄像头本身发生移动,整个背景模型都会过时
    # 我们希望区分所关注的物体与其他物体,即使路径上存在交叉
    # 实质上是一种聚类算法,通过不断迭代,计算质心,移动矩形,最后实现收敛
    import cv2
    
    # 打开摄像头
    cap = cv2.VideoCapture(0)
    success, frame = cap.read()
    
    # 丢弃9帧,让相机有足够时间调整
    for i in range(10):
        success, frame = cap.read()
        print(frame)
        if not success:
            exit(1)
    
    # 初始化定义一个滑动窗口,这个没有什么规定,看你想要追踪物体的大小而定
    # 通过shape获取图像的长度与宽度
    frame_h, frame_w = frame.shape[:2]
    w = frame_w // 4
    h = frame_h // 4
    x = frame_w // 2 - w // 2
    y = frame_h // 2 - h // 2
    track_window = (x, y, w, h)
    
    # 选择自己感兴趣区域的像素,并转到HSV颜色空间(用于后续的反投影中)
    interested_frame = frame[y:y+h, x:x+w]  # 根据自己的目标预期的位置设定该区域
    hsv_img = cv2.cvtColor(interested_frame, cv2.COLOR_BGR2HSV)
    
    # 计算感兴趣区域的色调直方图
    mask = None  # 不设置掩膜
    interested_hist = cv2.calcHist([hsv_img], [0], mask, [180], [0, 180])  # 0表示只用通道一来计算直方图,每个通道直方图使用180bin,每个bin值的范围从0到180
    cv2.normalize(interested_hist, interested_hist, 0, 255, cv2.NORM_MINMAX)  # 将值规范到0到255
    term_criterion = (cv2.TERM_CRITERIA_COUNT | cv2.TERM_CRITERIA_EPS, 10, 1)  # 分别代表迭代十次之后或者像素点移动不超过1像素停止(因为该算法本身就是在不断调整矩形所在位置,即像素移动)
    
    # 开始循环
    success, frame = cap.read()
    frame = cv2.flip(frame, 1)
    while success:
        hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
        back_proj = cv2.calcBackProject([hsv], [0], interested_hist, [0, 180], 1)  # 此处的0和180应该与之前的直方图保持一致,1表示不返回新的数组作为反投影
    # 正式运行
        num_iters, track_window = cv2.meanShift(back_proj, track_window, term_criterion)
    
        # 绘制最终的成果
        x, y, w, h = track_window
        cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2)
        cv2.imshow('back-projection', back_proj)
        cv2.imshow('meanshift', frame)
    
        if cv2.waitKey(1) == 27:
            break
    
        success, frame = cap.read()
        frame = cv2.flip(frame, 1)
    
    # 关闭摄像头和所有窗口
    cap.release()
    cv2.destroyAllWindows()

    效果确实很好,不会被突然出现的物体影响本人也是初学者,如有错误,欢迎指出!

    展开全文
  • 利用VS2010和Opencv实现物体追踪
  • 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] 做上下阈值。

    感谢观看!

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

    展开全文
  • 内含代码可以检测运动物体,采用高斯混合模型算法提取前景
  • 本文实现对特定颜色的物体追踪,我实验用的是绿萝的树叶。 新建脚本ball_tracking.py,加入代码: import argparse from collections import deque import cv2 import numpy as np 导入必要的包,然后定义一些函数 ...
  • 移动物体识别追踪(C#opencvsharp源码实例
  • 利用Opencv实现物体的跟踪(1)

    千次阅读 2022-04-21 21:05:24
    利用Opencv实现物体的跟踪(1)
  • 主要为大家详细介绍了Opencv光流运动物体追踪的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • OpenCV杂谈_08 一. 需要做的前期准备 ...一段提前录制好的用于物体检测、追踪的视频(要求:摄像头是保持静止不动的) 一个用的顺手的IDE(本人推荐Pycharm) 二. 源码如下 main.py 文件 ...
  • OpenCV 移动追踪

    2018-06-07 19:51:48
    将运动的物体从背景中检测出来,通过色差的不同来将移动的物体于背景区别开,...使用一些OpenCV绘图功能来绘制交叉点,并且显示在跟踪的物体图像上,并且在整个监测运动的工程中,可以控制监测点的开关,运行和退出。
  • 正所谓的光流估计,就是在视频的前后帧的分析中,能分析出图中的一些object的移动方向和速度,可以做目标追踪使用。 Lucas-Kanade算法改进 经典的光流估计是Lucas-Kanade 算法,这个算法是基于下列的三个基本假设: ...
  • opencv 运动物体跟踪

    2017-03-13 15:28:19
    opencv 运动物体跟踪,
  • 主要为大家详细介绍了python+opencv实现动态物体追踪,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 主要为大家详细介绍了OpenCV3.0+Python3.6实现特定颜色的物体追踪,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 经典实时物体追踪算法大全 经典实时物体追踪算法大全 1. 前言 2. 经典实时物体追踪算法描述 3. 代码实现 1. 前言 2. 经典实时物体追踪算法描述 视觉目标跟踪(Visual Object Tracking)是计算机视觉领域的一...
  • opencv追踪物体的小车

    2022-04-19 22:27:20
    opencv追踪物体的小车
  • opencvOpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。...OpenCV用C++语言编写,它的主要接口也是C++语言,但是依然保留了大量...
  • Opencv中使用Tracker实现物体跟踪
  • opencv运行物体追踪

    2015-01-14 20:59:44
    opencv在静态背景下的物体追踪,运行环境是vs2010,和opencv2410版本。绝对可以运行!需要配置属性,起配置方法可以见本人博客http://blog.csdn.net/qq5132834/article/details/42253341
  • OpenCV实现目标追踪的八种方法

    千次阅读 2020-10-16 14:41:02
    本文将讨论OpenCV上八种不同的目标追踪算法。 虽然我们熟知的的质心追踪器表现得很好,但它需要我们在输入的视频上的每一帧运行一个目标探测器。对大多数环境来说,在每帧上进行检测非常耗费计算力。 所以,我们想...
  • opencv 颜色追踪.rar

    2020-03-30 19:01:21
    基于python的调用opencv库,对不同物体的不同颜色实现物体目标的追踪。可以实现利用摄像头来捕捉物体目标。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,078
精华内容 1,231
关键字:

opencv物体追踪