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

 更新时间:2022年12月20日 10:07:23   作者:AI technophile  
OpenCV颜色检测只是一个起点,最终目标是最终使用Python 3代码在视频流帧中定位彩色元素位置,下面这篇文章主要给大家介绍了关于Python图像处理之使用OpenCV检测对象颜色的相关资料,需要的朋友可以参考下

前言

检测图像中对象颜色的一种简单方法是首先将图像从 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检测对象颜色的文章就介绍到这了,更多相关Python OpenCV检测对象颜色内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python实用小技巧之判断输入是否为汉字/英文/数字

    Python实用小技巧之判断输入是否为汉字/英文/数字

    这篇文章主要给大家介绍了关于Python实用小技巧之判断输入是否为汉字/英文/数字的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2023-06-06
  • Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法

    Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法

    这篇文章主要介绍了Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法,涉及Python中cx_Oracle模块与csv模块操作Oracle数据库及csv文件的相关技巧,需要的朋友可以参考下
    2015-05-05
  • Python自动打印被调用函数变量名及对应值 

    Python自动打印被调用函数变量名及对应值 

    这篇文章主要介绍了Python自动打印被调用函数的变量名及对应的值,文章围绕主题展开详细的内容介绍,具有一定的参考价,需要的朋友可以参考一下 
    2022-07-07
  • python 与服务器的共享文件夹交互方法

    python 与服务器的共享文件夹交互方法

    今天小编就为大家分享一篇python 与服务器的共享文件夹交互方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • 对python多线程与global变量详解

    对python多线程与global变量详解

    今天小编就为大家分享一篇对python多线程与global变量详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • python中extend函数举例详解以及对比

    python中extend函数举例详解以及对比

    Python中的extend函数是用于将一个列表的元素添加到另一个列表中,它会将第一个列表中的元素逐个添加到第二个列表的末尾,这篇文章主要给大家介绍了关于python中extend函数举例详解以及对比的相关资料,需要的朋友可以参考下
    2024-03-03
  • 详解Python字典查找性能

    详解Python字典查找性能

    这篇文章主要为大家介绍了Python字典查找性能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助<BR>
    2021-12-12
  • Python split()函数使用方法详解

    Python split()函数使用方法详解

    这篇文章主要给大家详细介绍一下Python split()函数的使用方法,文中有详细的代码示例供大家参考,具有一定的参考价值,需要的朋友可以参考下
    2023-07-07
  • Flask中嵌套启动子线程的方法示例详解

    Flask中嵌套启动子线程的方法示例详解

    这篇文章主要为大家介绍了Flask中嵌套启动子线程的方法示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • Python中的浮点数原理与运算分析

    Python中的浮点数原理与运算分析

    这篇文章主要介绍了Python中的浮点数原理与运算分析,结合实例形式分析了Python浮点数操作的常见错误,并简单解释了浮点数运算的原理与比较运算实现方法,需要的朋友可以参考下
    2017-10-10

最新评论