首页 > 编程语言 >opencv-python 4.1. 改变颜色空间

opencv-python 4.1. 改变颜色空间

时间:2023-03-27 16:15:15浏览次数:42  
标签:blue 4.1 python frame mask opencv BGR HSV cv

改变色彩空间

OpenCV中有150多种颜色空间转换方法。我们只研究两种最广泛使用的转换方法,BGR↔Gray和BGR↔HSV。 对于颜色转换,使用函数cv.cvtColor(input_image,flag),其中flag确定转换类型。 对于BGR→Gray转换,我们使用标志cv.COLOR_BGR2GRAY。类似地,对于BGR→HSV,我们使用标志cv.COLOR_BGR2HSV。要获取其他标志,只需在Python终端中运行以下命令:

import cv2 as cv
flags = [i for i in dir(cv) if i.startswith('COLOR_')]
print( flags )
注意:对于HSV色彩空间,Hue(色调)的取值范围是[0,179],Saturation(饱和度)的取值范围是[0,255],Value(明度)的取值范围是[0,255]。不同的软件可能使用不同的取值方式,因此,如果要将OpenCV的HSV值与其他软件的HSV值进行比较时,则需要对这些范围进行标准化。

hsv图像
image

如何去查找确定HSV值

其实解决这个问题非常简单,你可以使用相同的函数cv.cvtColor()。你只需传递所需的BGR值,而不是传递图像。例如:

green = np.uint8([[[0,255,0 ]]])
hsv_green = cv.cvtColor(green,cv.COLOR_BGR2HSV)
print(hsv_green)

image

现在分别将[H-10,100,100]和[H+10,255,255]作为下限和上限。除了这种方法,你可以使用任何图像编辑工具如GIMP,或任何在线转换器来查找这些值,但不要忘记调整HSV范围。

对象提取

现在我们知道如何将BGR图像转换为HSV,我们可以使用HSV色彩空间来提取彩色对象。在HSV中表示颜色比在BGR颜色空间中更容易。在我们的程序中,我们将尝试提取视频画面中的蓝色对象。下面是方法程序执行步骤:

  • 获取视频中的每一帧
  • 从BGR转换为HSV颜色空间
  • 我们为HSV图像设定一系列的蓝色阈值
  • 单独提取蓝色对象并显示,之后我们便可以对我们想要的图像做任何事情。

以下是详细评论的代码:

import cv2 as cv
import numpy as np

# 从文件里读取
cap = cv.VideoCapture('output.avi')

while cap.isOpened():

    # Take each frame
    _, frame = cap.read()

    # Convert BGR to HSV
    hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)

    # define range of blue color in HSV
    lower_blue = np.array([85, 100, 100])
    upper_blue = np.array([105, 220, 240])

    # Threshold the HSV image to get only blue colors
    mask = cv.inRange(hsv, lower_blue, upper_blue)

    # Bitwise-AND mask and original image
    res = cv.bitwise_and(frame, frame, mask=mask)

    cv.imshow('frame', frame)
    cv.imshow('mask', mask)
    cv.imshow('res', res)
    k = cv.waitKey(5) & 0xFF
    if k == 27:
        break

cap.release()
cv.destroyAllWindows()

image

注意:图像中有一些噪音,我们将在后面的章节中看到如何删除它们。这是对象提取中最简单的方法。一旦你学习了轮廓的功能,你就可以做很多事情,比如找到这个物体的重心并用它来追踪物体,只需在镜头前移动你的手以及许多其他有趣的东西来绘图。

标签:blue,4.1,python,frame,mask,opencv,BGR,HSV,cv
From: https://www.cnblogs.com/yimeimanong/p/17260872.html

相关文章