OpenCV目标跟踪物体跟踪

任务目标

  • 物体跟踪
    • 从视频中获取每一帧图像
    • 图像转换为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掩膜的通俗理解)
OpenCV目标跟踪物体跟踪_第1张图片

代码实现

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()

实验结果

OpenCV目标跟踪物体跟踪_第2张图片

参考

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

你可能感兴趣的:(图像处理)