OpenCv-Python学习笔记(五):颜色空间转换

转换颜色空间

在 OpenCV 中有超过 150 中进行颜色空间转换的方法。但是你以后就会发现我们经常用到的也就两种:BGR↔Gray 和 BGR↔HSV。
cv2.cvtColor()函数:转换颜色空间。
第一个参数表示待转换的图片。
第二个参数表示转换的类型。

  • cv2.COLOR_BGR2GRAY:表示从BGR转换位灰度图像。
  • cv2.COLOR_BGR2HSV:表示从BGR转换位HSV。

例:

import cv2
#以彩色图像的格式读取图片
img =cv2.imread("../data/image/4.png",cv2.IMREAD_COLOR)
#转换位灰度图像
img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#转换到HSV
img_HSV = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
cv2.imshow("gray",img_gray)
cv2.imshow("HSV",img_HSV)
cv2.waitKey()

在这里插入图片描述
注意:在 OpenCV 的 HSV 格式中,H(色彩/色度)的取值范围是 [0,179], S(饱和度)的取值范围 [0,255],V(亮度)的取值范围 [0,255]。但是不同的软件使用的值可能不同。所以当你需要拿 OpenCV 的 HSV 值与其他软件的 HSV 值进行对比时,一定要记得归一化。

物体跟踪

将一副图片从BGR转换位HSV,利用这一点来提取某个特定颜色的物体。在HSV颜色空间中要比在BGR空间中更容易表示一个特定颜色。
例:提取一个蓝色的物体

import cv2
import numpy as np
img =cv2.imread("../data/image/7.png")
#转换为HSV
img_HSV = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
#设置蓝色的阈值
lower_blue = np.array([110,50,50])
upper_blue= np.array([130,255,255])
#根据阈值构建掩膜
mask = cv2.inRange(img_HSV,lower_blue,upper_blue)
#对原图和掩膜进行位运算
img_res = cv2.bitwise_and(img,img,mask = mask)
cv2.imshow("img",img)
cv2.imshow("HSV",img_HSV)
cv2.imshow("mask",mask)
cv2.imshow("res",img_res)
cv2.waitKey()

cv2.inRange()函数:检查数组元素是否位于其他两个数组的元素之间。即检查图像上中的每个像素点,如果像素点的值在设置的范围之间,则将该点设置为白色,否则为黑色,返回一幅黑白的图像。
第一个参数表示待检查的图像。
第二个参数表示下边界数组或者标量。
第三个参数表示上边界数组或者标量。
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值