当前位置: 首页 > news >正文

Python-OpenCV中的图像处理-物体跟踪

Python-OpenCV中的图像处理-物体跟踪

  • 物体跟踪

物体跟踪

现在我们知道怎样将一幅图像从 BGR 转换到 HSV 了,我们可以利用这一点来提取带有某个特定颜色的物体。在 HSV 颜色空间中要比在 BGR 空间中更容易表示一个特定颜色。在我们的程序中,我们要提取的是一个蓝色的物体。下面就是就是我们要做的几步:
• 从视频中获取每一帧图像
• 将图像转换到 HSV 空间
• 设置 HSV 阈值到蓝色范围。
• 获取蓝色物体,当然我们还可以做其他任何我们想做的事,比如:在蓝色物体周围画一个圈。

import numpy as np
import cv2# cv2.cvtColor(img, flag)
# cv2.inRange()# 打印颜色转换flag
flags =[ i for i in dir(cv2) if i.startswith('COLOR_')]
print(flags)# OpenCV支持超过150种颜色转换的方法,常用:BGR<->GRAY 和 BGR<->HSV
# OpenCV的HSV格式中,H(色彩/色度)的取值范围是[0, 179], S(饱和度)的取值范围[0, 255], V(亮度)的取值范围[0, 255]
# 不同软件取值范围可能不同,使用时需要做归一化# 物体跟踪,跟踪一个蓝色物体,步骤:
# 1.从视频中获取一帧图像
# 2.将图像转换到HSV空间
# 3.设置HSV阀值到蓝色范围
# 4.获取蓝色物体,或其他处理cap = cv2.VideoCapture(0)while True:# 获取图像帧(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)mask_blue = cv2.medianBlur(mask, 7)  # 中值滤波# 查找轮廓contours, hierarchy = cv2.findContours(mask_blue, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)# print(contours, hierarchy)for cnt in contours:(x, y, w, h) = cv2.boundingRect(cnt)cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)font = cv2.FONT_HERSHEY_SIMPLEXcv2.putText(frame, "Blue", (x, y - 5), font, 0.7, (0, 255, 0), 2)# 对原图和掩膜进行位运算res =cv2.bitwise_and(frame, frame, mask=mask)# 显示图像cv2.imshow('frame', frame)cv2.imshow('mask', mask)cv2.imshow('res', res)k = cv2.waitKey(5)&0xFFif k == 27:breakcap.release()
cv2.destroyAllWindows()

在这里插入图片描述

http://www.lryc.cn/news/123680.html

相关文章:

  • 本地Linux 部署 Dashy 并远程访问教程
  • 6.2 口令破解攻击
  • SSL账号申请及配置
  • JS代码混淆加密有什么用?
  • Oracle的function執行DML操作
  • 大语言模型:LLM的概念是个啥?
  • 21 | 朝阳医院数据分析
  • 二十二、责任链模式
  • opencv,opengl,osg,vulkan,webgL,opencL,cuda,osg,vtk,ogre的区别
  • 基于颜色进行轮廓分割,基于opencv和python
  • TCP重连 - 笔记
  • Qt画波浪球(小费力)
  • 监控Kubernetes Node组件的关键指标
  • Mysql之优化-主从复制
  • 编程之道:构建优雅可维护代码的基石
  • 十大经典排序算法
  • Linux6.37 Kubernetes 集群调度
  • 记录一次前端input中的值为什么在后端取不到值
  • Apipost接口自动化控制器使用详解
  • Leaflet入门,Leaflet如何自定义版权信息,以vue2-leaflet修改自定义版权为例
  • 【AI】p54-p58导航网络、蓝图和AI树实现AI随机移动和跟随移动、靠近玩家挥拳、AI跟随样条线移动思路
  • mysql事务隔离级别详细讲解
  • 如何利用 EMC 模型解决能源服务提供商的瓶颈
  • C#--StringComparison枚举值解析
  • adb对安卓app进行抓包(ip连接设备)
  • 【EI复现】考虑区域多能源系统集群协同优化的联合需求侧响应模型(Matlab代码实现)
  • 日常BUG —— Java判空注解
  • 【基础类】—前端算法类
  • 中国信通院腾讯安全发布《2023数据安全治理与实践白皮书》
  • linux下用脚本将目录内的文件分类到各自的创建年份(如2023)或年月份(如2023/202308)目录内