当前位置: 首页 > news >正文

OpenCV颜色检测

OpenCV颜色检测

    • 前言
    • 策略分析
    • 根据颜色检测目标对象
    • 相关链接

前言

绿幕技术是一种经典的视频编辑技术,可以用于将人物置于不同的背景中。例如在电影制作中,技术的关键在于演员不能身着特定颜色的衣服(比如绿色),站在只有绿色的背景前。然后,通过识别绿色像素,确定背景并替换这些像素上的内容。

策略分析

在本节中,我们将了解如何利用 cv2.inRangecv2.bitwise_and 方法检测给定图像中的绿色像素,模型策略如下:

  1. 将图像从 RGB 转换为 HSV 空间
  2. 指定 HSV 空间中对应绿色的上下限
  3. 识别绿色像素,生成掩码 mask
  4. 在原始图像和掩码图像之间执行按位与 (bitwise_and`)运算

根据颜色检测目标对象

(1) 导入所需库并加载图像:

import cv2, numpy as np
import matplotlib.pyplot as pltimg = cv2.imread('5.jpeg', 1)
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.show()

示例图像
(2) 将图像转换到 HSV (Hue-Saturation-Value) 空间,从 RGB 转换为 HSV 空间将亮度与颜色分离,以便可以轻松提取每个像素的颜色信息:

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

(3) 定义 HSV 空间中绿色的上下阈值:

lower_green = np.array([45,100,100])
upper_green = np.array([80,255,255])

(4) 生成掩码,仅激活落在定义的上下阈值内的像素。cv2.inRange 是一种比较操作,用于检查像素值是否在最小值和最大值之间:

mask = cv2.inRange(hsv, lower_green, upper_green)

(5) 在原始图像和掩码之间执行 cv2.bitwise_and 操作以获取结果图像:

res = cv2.bitwise_and(img, img, mask=mask)plt.subplot(131)
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.title('Original image')
plt.subplot(132)
plt.imshow(mask, cmap='gray')
plt.title('Mask on image')
plt.subplot(133)
plt.imshow(cv2.cvtColor(res, cv2.COLOR_BGR2RGB))
plt.title('Resulting image')
plt.show()

处理结果
从上图中可以看出,算法忽略了图像中的其余内容,只关注特定的颜色,使用此算法,可以使用 cv2.bitwise_not 操作生成一个非绿色的前景蒙版,并执行绿幕技术。
本节介绍了如何识别图像中的颜色空间,如果想将另一张图像叠加到识别的绿幕上,我们会选择另一幅图像中选择与原始图像中的绿色像素相对应的像素。

相关链接

OpenCV简介与图像处理基础
OpenCV中的色彩空间和色彩映射
语义分割详解
图像分割详解

http://www.lryc.cn/news/380930.html

相关文章:

  • VScode开发ARM环境搭建
  • AI-人工智能指数报告(四):科学、医学与教育
  • Redis内存数据库
  • LabVIEW高精度电能质量监测系统
  • Java程序之可爱的小兔兔
  • ▶《强化学习的数学原理》(2024春)_西湖大学赵世钰 Ch5 蒙特卡洛方法【model-based ——> model-free】
  • 【linux】Valgrind工具集详解(十六):交叉编译、移植到arm(失败)
  • 前端面试题(七)答案版
  • 为微信小程序项目添加eslint
  • Win10用户必看:最好用最稳定的版本在此,值得一试!
  • 处理文本内容的命令和正则表达式
  • AI与音乐:当技术与艺术发生冲突
  • java泛型学习
  • vscode c++ 开发环境配置
  • PHP安装配置
  • std::vector<>的{}用法与stl中的共享指针
  • 《FFmpeg开发实战:从零基础到短视频上线》资源下载和内容勘误
  • OpenCV目标识别
  • 密码学及其应用——为什么选择接近的质数因子对RSA加密算法不安全?
  • 爱心商城管理系统的设计
  • 【python】linux下安装chromedriver
  • Day18—使用Scrapy框架快速开发爬虫
  • 04--MySQL8.0_JDBC
  • OPENCV中0x00007FFE5F35F39C发生异常
  • Python 设计模式(第2版) -- 第三部分(行为型模式)
  • EXCEL数据导入HIVE
  • C语言常用标准头文件
  • vuejs3用gsap实现动画
  • 企业级-PDF文件下载
  • 00 - React 基础