Python图像处理之使用OpenCV检测对象颜色

作者:AI?technophile 时间:2023-05-20 01:00:18 

前言

检测图像中对象颜色的一种简单方法是首先将图像从 RGB 转换为 HSV 颜色空间,然后使用一系列色调检测对象,这可以通过使用 OpenCV 库轻松完成。为了完成对象检测任务,我们需要使用感兴趣对象的颜色值范围,使用颜色值范围识别和提取的图像中目标对象。之后,我们可以更改检测到的对象的颜色,甚至可以直接删除检测到的对象。

使用 OpenCV 检测对象颜色

在本节中,我们将使用的输入图像是位于网球场的女孩,而感兴趣的对象是女孩的头发。我们首先将 RGB 图像转换到 HSV 色彩空间,从而检测黑色色值区域。

(1) 首先加载所需的库,并读取输入图像:

import cv2
import numpy as np
import matplotlib.pylab as plt
img = cv2.imread("1.png")

hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

(2) 通过选择黑色头发可能拥有的 HSV 颜色范围来为头发创建掩码,然后从输入图像中提取黑色头发:

mask = cv2.inRange(hsv, (0, 70, 80), (15, 255, 255))
imask = mask>0
hair = np.zeros_like(img)
hair[imask] = img[imask]

(3) 通过减少 HSV 通道值,然后将图像转换回 BGR 空间,将黑色头发的颜色更改为其他颜色。

用于提取与彩色对象相对应的像素的函数如下所示,该函数通过检查像素值是否在下限和上限指定的值范围内来获取对应像素:

cv2.inRange(src, lowerb, upperb)

函数 inRange() 检查 src 元素是否位于 lowervupperb 构成的区间范围内。

black = img.copy()
hsv[..., 0:3] = hsv[..., 0:3] / 8
black[imask] = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)[imask]
black = np.clip(black, 0, 255)

(4) 最后,绘制输入图像,提取的黑色头发,修改头发颜色并显示带有修改头发颜色后的输出图像:

plt.figure(figsize=(20,10))
plt.subplots_adjust(0,0,1,0.9,0.01,0.075)
plt.subplot(131), plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.axis('off')
plt.title('original', size=10)
plt.subplot(132), plt.imshow(cv2.cvtColor(hair, cv2.COLOR_BGR2RGB))
plt.axis('off')
plt.title('only hair', size=10)
plt.subplot(133), plt.imshow(cv2.cvtColor(black, cv2.COLOR_BGR2RGB))
plt.axis('off'), plt.title('hair color changed', size=10)
plt.suptitle('Detecting and changing object colors with opencv', size=15)
plt.show()

Python图像处理之使用OpenCV检测对象颜色

总结 

来源:https://blog.csdn.net/qq_30167691/article/details/128138980

标签:python,opencv,对象颜色
0
投稿

猜你喜欢

  • 获取python的list中含有重复值的index方法

    2022-03-06 20:54:02
  • python 根据字典的键值进行排序的方法

    2023-10-07 00:07:56
  • PHP实现手机号码中间四位用星号(*)隐藏的自定义函数分享

    2023-11-06 06:36:22
  • Python开发之身份证验证库id_validator验证身份证号合法性及根据身份证号返回住址年龄等信息

    2022-08-08 04:10:31
  • sql注入过程详解_动力节点Java学院整理

    2024-01-12 19:43:59
  • js验证表单(form)中的单选(radio)值

    2008-03-18 13:23:00
  • fgetcvs在linux的问题

    2024-06-05 09:37:56
  • Mysql数据库备份和还原常用的命令

    2011-12-01 10:41:54
  • 使用Django实现把两个模型类的数据聚合在一起

    2023-11-11 23:37:42
  • MySQL Server 5.0安装教程(图解)

    2010-10-14 14:26:00
  • 用browsercam做用户登录后页面的兼容性测试

    2008-12-29 12:05:00
  • Python编程实现控制cmd命令行显示颜色的方法示例

    2023-07-24 05:39:45
  • 一个效果写的HashTable代码

    2024-04-10 13:57:49
  • 像懒人一样去设计

    2009-04-23 12:43:00
  • python中_del_还原数据的方法

    2022-07-28 18:49:14
  • Windows和夜神模拟器上抓包程序mitmproxy的安装使用详解

    2023-11-15 12:29:21
  • 微信小程序实现星星评价效果

    2023-08-24 10:04:45
  • Python OpenCV特征检测之特征匹配方式详解

    2021-07-20 00:51:58
  • Navicat把csv数据导入mysql

    2024-01-18 12:40:26
  • python实现打印类的所有属性和方法

    2021-07-28 14:51:56
  • asp之家 网络编程 m.aspxhome.com