仿70网站分类目录源码,图书管理系统网站开发教程,国外有建站公司吗,织梦做单页面网站Python-OpenCV中的图像处理-物体跟踪 物体跟踪 物体跟踪
现在我们知道怎样将一幅图像从 BGR 转换到 HSV 了#xff0c;我们可以利用这一点来提取带有某个特定颜色的物体。在 HSV 颜色空间中要比在 BGR 空间中更容易表示一个特定颜色。在我们的程序中#xff0c;我们要提取的… 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, maskmask)# 显示图像cv2.imshow(frame, frame)cv2.imshow(mask, mask)cv2.imshow(res, res)k cv2.waitKey(5)0xFFif k 27:breakcap.release()
cv2.destroyAllWindows()