OpenCV(Python3)_6(更改颜色空间)

匿名 (未验证) 提交于 2019-12-02 22:54:36

目标

  • 在本教程中,您将学习如何将图像从一个色彩空间转换为另一个色彩空间,如BGRGray,BGRHSV等。
  • 除此之外,我们还将创建一个应用程序,用于在视频中提取彩色对象
  • 您将学习以下函数:

改变色彩空间

OpenCV中有150多种颜色空间转换方法。但我们只会研究使用最广泛的两种,BGRGray和BGRHSV。

对于颜色转换,我们使用函数cv.cvtColor(input_image,flag),其中flag确定转换的类型。

对于BGR灰度转换,我们使用标志cv.COLOR_BGR2GRAY同样对于BGRHSV,我们使用标志cv.COLOR_BGR2HSV要获得其他标志,只需在Python终端中运行以下命令:

import cv2 as cv
flags = [i for i in dir(cv) if i.startswith('COLOR_')]

print( flags )

注意

对于HSV,色调范围为[0,179],饱和度范围为[0,255],值范围为[0,255]。不同的软件使用不同比例。因此,如果您正在比较OpenCV值与他们,您需要规范化这些范围。

对象跟踪

现在我们知道如何将BGR图像转换为HSV,我们可以使用它来提取有色物体。在HSV中,表现颜色比在BGR色彩空间中更容易。在我们的应用程序中,我们将尝试提取蓝色的对象。所以这里是方法:

  • 拍摄视频的每一帧
  • 从BGR转换到HSV色彩空间
  • 我们将HSV图像限定为一系列蓝色
  • 现在单独提取蓝色对象,我们可以在我们想要的图像上做任何事情。

程序:

import cv2 as cv
import numpy as np
cap = cv.VideoCapture('test1.avi')
while(1):
























cv.destroyAllWindows()

下图显示了蓝色和红色血条的跟踪:


如何找到跟踪的HSV值?

它非常简单,您可以使用相同的函数您只需传递您想要的BGR值,而不是传递图像。例如,要查找Green的HSV值,请尝试在Python终端中执行以下命令:

程序:

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

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


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!