标记指定颜色

2021-09-28  本文已影响0人  大龙10

《OpenCV轻松入门:面向Python》读书笔记
作者:李立宗
出版社:电子工业出版社
出版时间:2019-05

第4章 色彩空间类型转换

4.4 HSV色彩空间讨论

4.4.3 标记指定颜色

  在HSV色彩空间中,H通道对应不同的颜色。或者换个角度理解,颜色的差异主要体现在H通道值的不同上。所以,通过对H通道值进行筛选,便能够筛选出特定的颜色。

  本节将首先通过例题展示一些实现上的细节问题,然后通过具体例题展示如何将图像内的特定颜色标记出来,即将一幅图像内的其他颜色屏蔽,仅仅将特定颜色显示出来。

1)通过inRange函数锁定特定值

  OpenCV中通过函数cv2.inRange()来判断图像内像素点的像素值是否在指定的范围内,其语法格式为:

cv2.inRange(src, lowerb, upperb)

返回的结果dst可以理解为一个掩码数组,其大小与原始数组一致。

2)通过基于掩码的按位与显示ROI

  将不感兴趣区域以黑色显示,可以通过设置掩码的方式将该区域的值置为0来实现。

3)显示特定颜色值

【例4.9】分别提取OpenCV的logo图像内的红色、绿色、蓝色。
需要注意:

根据上述分析,各种颜色的HSV区间值分布在[H-10,100,100]和[H+10,255,255]之间。因此,各种颜色值的范围为:
● 蓝色:值分布在[110,100,100]和[130,255,255]之间。
● 绿色:值分布在[50,100,100]和[70,255,255]之间。
● 红色:值分布在[0,100,100]和[10,255,255]之间。

  首先利用函数cv2.inRange()查找指定颜色区域,然后利用基于掩码的按位与运算将指定颜色提取出来。

4)程序

# -*- coding: utf-8 -*-
import cv2
import numpy as np
opencv=cv2.imread("opencv.jpg")
hsv = cv2.cvtColor(opencv, cv2.COLOR_BGR2HSV)
cv2.imshow('opencv',opencv)
#=============指定蓝色值的范围=============
minBlue = np.array([110,50,50])
maxBlue = np.array([130,255,255])
#确定蓝色区域
mask = cv2.inRange(hsv, minBlue, maxBlue)
#通过掩码控制的按位与,锁定蓝色区域
blue = cv2.bitwise_and(opencv,opencv, mask= mask)
cv2.imshow('blue',blue)
#=============指定绿色值的范围=============
minGreen = np.array([50,50,50])
maxGreen = np.array([70,255,255])
#确定绿色区域
mask = cv2.inRange(hsv, minGreen, maxGreen)
#通过掩码控制的按位与,锁定绿色区域
green = cv2.bitwise_and(opencv,opencv, mask= mask)
cv2.imshow('green',green)
#=============指定红色值的范围=============
minRed = np.array([0,50,50])
maxRed = np.array([30,255,255])
#确定红色区域
mask = cv2.inRange(hsv, minRed, maxRed)
#通过掩码控制的按位与,锁定红色区域
red= cv2.bitwise_and(opencv,opencv, mask= mask)
cv2.imshow('red',red)
cv2.waitKey()
cv2.destroyAllWindows()

5)运行结果

上一篇 下一篇

猜你喜欢

热点阅读