通过OpenCV实现对指定颜色的物体追踪

实现对指定颜色的物体追踪主要分为以下几步:

  1. 使用OpenCV读取视频,并对读取的帧进行预处理,转换为HSV色彩空间。
import cv2

# 读取视频
cap = cv2.VideoCapture('test.mp4')

while cap.isOpened():
    ret, frame = cap.read()

    if not ret:
        break

    # 转换为HSV色彩空间
    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

    # TODO: 对hsv图像进行处理
  1. 定义颜色范围,用于后续追踪指定颜色的物体。
# 颜色范围
lower_color = (20, 100, 100)
upper_color = (30, 255, 255)
  1. 对预处理后的帧进行二值化,获取指定颜色的物体的掩码。
import numpy as np

# 二值化
mask = cv2.inRange(hsv, lower_color, upper_color)

# 腐蚀和膨胀操作,去掉噪声
kernel = np.ones((5, 5), np.uint8)
mask = cv2.erode(mask, kernel, iterations=2)
mask = cv2.dilate(mask, kernel, iterations=2)
  1. 使用轮廓检测对掩码进行处理,获取指定颜色的物体的外边界矩形框。
# 轮廓检测
contours, hierarchy = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# 筛选出最大轮廓
if len(contours) > 0:
    max_contour = max(contours, key=cv2.contourArea)

    # 获取轮廓的外接矩形框
    x, y, w, h = cv2.boundingRect(max_contour)

    # 画出矩形框
    cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
  1. 对每帧的处理结果进行展示。
# 展示结果
cv2.imshow('frame', frame)

# 按q键退出循环
if cv2.waitKey(1) & 0xFF == ord('q'):
    break

# 释放资源
cap.release()
cv2.destroyAllWindows()

以下是两个示例:

示例一:追踪黄色球体

  1. 获取黄色颜色范围。
# 颜色范围
lower_yellow = (25, 80, 80)
upper_yellow = (35, 255, 255)
  1. 对预处理后的帧进行二值化。
# 二值化
mask = cv2.inRange(hsv, lower_yellow, upper_yellow)
  1. 使用轮廓检测对掩码进行处理,获取黄色球体的外边界矩形框。
if len(contours) > 0:
    max_contour = max(contours, key=cv2.contourArea)
    x, y, w, h = cv2.boundingRect(max_contour)
    cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)

示例二:追踪红色人手

  1. 获取红色颜色范围。
# 颜色范围
lower_red = np.array([0, 50, 50])
upper_red = np.array([10, 255, 255])
mask1 = cv2.inRange(hsv, lower_red, upper_red)
lower_red = np.array([170, 50, 50])
upper_red = np.array([180, 255, 255])
mask2 = cv2.inRange(hsv, lower_red, upper_red)
mask = mask1 + mask2
  1. 对预处理后的帧进行二值化。
# 二值化
mask = mask1 + mask2
  1. 使用轮廓检测对掩码进行处理,获取红色人手的外边界矩形框。
if len(contours) > 0:
    max_contour = max(contours, key=cv2.contourArea)
    x, y, w, h = cv2.boundingRect(max_contour)
    cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:通过OpenCV实现对指定颜色的物体追踪 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • Python中字符串对象语法分享

    Python中字符串对象语法分享 什么是字符串对象 字符串对象是Python中用于表示文本和字符序列的数据类型。在Python中,用一对单引号或双引号括起来的任何文本都可以作为字符串对象,例如: string1 = "Hello, world!" string2 = ‘Python for Beginners’ 字符串对象的基本操作 字符…

    python 2023年6月3日
    00
  • python 表格打印代码实例解析

    Python表格打印代码实例解析 在Python中,我们经常需要对数据进行整理并按照一定的格式输出,将数据以表格的形式展示是一种常见的方式。本文将介绍如何用Python实现表格打印,并提供两个示例。 使用Python内置模块 tabulate tabulate 是 Python 内置模块中的一个用于将二维列表、元组或字典以表格形式打印输出的工具,使用 tab…

    python 2023年5月31日
    00
  • python 如何停止一个死循环的线程

    停止一个死循环的线程是Python中非常常见的问题,可以通过以下几个步骤来解决: 使用标志位停止线程:在死循环中使用条件判断,如果标志位为True,则退出循环,从而关闭线程。 使用Thread.join(timeout)方法停止线程:在主线程中使用Thread.join(timeout)方法,等待死循环线程在规定的时间内结束,从而关闭线程。 以下是两个示例说…

    python 2023年6月13日
    00
  • Python实现抓取网页生成Excel文件的方法示例

    下面是“Python实现抓取网页生成Excel文件的方法示例”的完整实例教程。 目录 前置知识 准备工作 抓取网页数据 生成Excel文件 示例说明一 示例说明二 总结 1. 前置知识 在学习本教程之前,你需要具备以下基础知识: Python编程语言基础 HTTP相关知识 请求和响应的格式 2. 准备工作 在开始编写代码之前,你需要安装以下两个Python库…

    python 2023年5月13日
    00
  • python具名元组(namedtuple)的具体使用

    当我们需要定义一个简单的类来存储数据时,Python 的 namedtuple 是一种很好的选择。namedtuple 可以看作是一个不可变的类,可以按名称来访问元组的各个元素,从而避免了索引数字所带来的混淆和错误。 使用 namedtuples 的主要优点是代码的可读性和设计的整洁性。因为它们是不可变的,所以它们适用于作为全局常量的对象或数据记录的值。 下…

    python 2023年5月14日
    00
  • python操作 hbase 数据的方法

    本文将介绍如何使用 Python 操作 HBase 数据的方式。HBase 是基于 Hadoop 分布式文件系统 HDFS 的 NoSQL 数据库,支持海量数据存储和快速读写操作。 安装依赖 在使用 Python 操作 HBase 数据之前,需要先安装相应的依赖。这里我们使用 happybase 库来操作 HBase 数据。 pip install happ…

    python 2023年6月3日
    00
  • Python使用folium excel绘制point

    下面我来详细讲解“Python使用folium excel绘制point”的完整攻略。 准备工作 使用pip安装folium、pandas和openpyxl三个库,它们分别用于在地图上标记点、读取Excel文件和操作Excel文件。 pip install folium pandas openpyxl 示例一:从Excel文件中读取数据并绘制标记点 首先,我…

    python 2023年6月3日
    00
  • Python中BeautifulSoup通过查找Id获取元素信息

    BeautifulSoup是一个Python库,用于解析HTML和XML文档,并提供了一些方便的方法来获取和操作文档中的元素。本文将详细讲解如何使用BeautifulSoup通过查找id获取元素信息,包括两个示例。 步骤一:安装BeautifulSoup 在使用BeautifulSoup之前,需要确保已安装BeautifulSoup库。可以使用以下命令安装B…

    python 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部