OpenCV轻松入门(七)——HSV颜色模型图像特效案例:判断白天夜晚抠图颜色过滤替换背景图

HSV模型解释

HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model)。

这个模型中颜色的参数分别是:

  • 色调(H)
  • 饱和度(S)
  • 明度(V)

色调H

用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,品红为300°;

饱和度S

饱和度S表示颜色接近光谱色的程度。一种颜色,可以看成是某种光谱色与白色混合的结果。其中光谱色所占的比例愈大,颜色接近光谱色的程度就愈高,颜色的饱和度也就愈高。饱和度高,颜色则深而艳。光谱色的白光成分为0,饱和度达到最高。通常取值范围为0%~100%,值越大,颜色越饱和。

明度V

明度表示颜色明亮的程度,对于光源色,明度值与发光体的光亮度有关;对于物体色,此值和物体的透射比或反射比有关。通常取值范围为0%(黑)到100%(白)。

结论

  1. 当S=1 V=1时,H所代表的任何颜色被称为纯色;
  2. 当S=0时,即饱和度为0,颜色最浅,最浅被描述为灰色(灰色也有亮度,黑色和白色也属于灰色),灰色的亮度由V决定,此时H无意义;
  3. 当V=0时,颜色最暗,最暗被描述为黑色,因此此时H(无论什么颜色最暗都为黑色)和S(无论什么深浅的颜色最暗都为黑色)均无意义。

注意:  

  • 在opencv中,H、S、V值范围分别是[0,180],[0,255],[0,255],而非[0,360],[0,1],[0,1];

这里我们列出部分hsv空间的颜色值, 表中将部分紫色归为红色。

判断白天还是夜晚案例

实现步骤

  1. 将图片从BGR颜色空间,转变成HSV颜色空间
  2. 获取图片的宽高信息
  3. 统计每个颜色点的亮度
  4. 计算整张图片的亮度平均值

注意:这仅仅只能做一个比较粗糙的判定,按照我们人的正常思维,在傍晚临界点我们也无法判定当前是属于晚上还是白天!

代码实现

import cv2
import numpy as np

# 计算明暗程度平均值函数
def col_v(img):
    img = cv2.imread(img) # 读取传进来的图片
    img = cv2.cvtColor(img,cv2.COLOR_BGR2HSV) # 转换图片为HSV颜色模式
    h,s,v = cv2.split(img) # 分割后会得到HSV3个通道的值
    v = np.average(v) # 对V(明暗度)求平均值,也可以用np.sum/图片像素点总数来求平均值
    return v

img_1 = '/Users/guojun/Desktop/img1.jpg'
img_2 = '/Users/guojun/Desktop/img2.jpg'
v_1 = col_v(img_1)
v_2 = col_v(img_2)

# 我们假设根据经验,平均值大于100的是白天
if v_2>100:
    print('day')
else:
    print('night')

颜色过滤案例

在一张图片中,如果某个物体的颜色为纯色,那么我们就可以使用颜色过滤inRange的方式很方便的来提取这个物体.

下面我们有一张网球的图片,并且网球的颜色为一定范围内的绿色,在这张图片中我们找不到其它颜色也为绿色的图片,所以我们可以考虑使用绿色来提取它!

图片的颜色空间默认为BGR颜色空间,如果我们想找到提取纯绿色的话,我们可能需要写(0,255,0)这样的内容,假设我们想表示一定范围的绿色就会很麻烦!

所以我们考虑将它转成HSV颜色空间,绿色的色调H的范围我们很容易知道,剩下的就是框定颜色的饱和度H和亮度V就可以啦!

实现步骤

  1. 读取一张彩色图片
  2. 将RGB转成HSV图片
  3. 定义颜色的范围,下限位(30,120,130),上限为(60,255,255)
  4. 根据颜色的范围创建一个mask

代码实现

替换背景图案例

实现步骤

  1. 从绿幕图片中过滤出绿幕
  2. 将狮子从绿幕中抠出来
  3. 在背景图片上抠出狮子的位置
  4. 将狮子和背景图片进行相加得到最终的图片

代码实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/545847.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

为什么不用低代码平台制作网站,套用这11个商城主题模板,让程序员解放双手

随着人工智能技术的迅猛发展,众多复杂工作变得愈发简便。二十年前,构建一个在线商城并处理支付交易是一项艰巨任务,而正是在那个时代,零售巨头淘宝和京东崭露头角。如今,我们迎来了新时代,众多高效工具应运…

Dinov2 + Faiss 图片检索

MetaAI 通过开源 DINOv2,在计算机视觉领域取得了一个显着的里程碑,这是一个在包含1.42 亿张图像的令人印象深刻的数据集上训练的模型。产生适用于图像级视觉任务(图像分类、实例检索、视频理解)以及像素级视觉任务(深度…

看完不会来揍我 | 孟德尔随机化(二)—— 代码实操 | 附代码注释 + 结果解读

最近真的是超超超超超超超级多的小伙伴们在咨询孟德尔随机化相关的问题和课程,意想不到的那种多!那我怎么办嘞!整呗!主打的就是一个宠粉! 关于孟德尔随机化,我们之前就已经在孟德尔随机化(一&am…

PHP学习(二)

一、php 数据类型之查看和判断数据类型 查看数据类型 1.gettype(传入一个变量) 能够获得变量的类型 2.var_dump(传入一个变量) 输出变量类型和值 <?php //声明一个变量 88.8 $f 88.8; $type gettype($f); echo $type; ?> <?php //多换几个类型试试 $str 你…

【wu-framework-parent】官网介绍

官网地址 介绍 springboot 版本3.2.1 wu-framework-parent 是一款由Java语言开发的框架&#xff0c;目标不写代码但是却能完成功能。 框架涵盖无赖ORM( wu-framework-lazy-orm-spring-starter)、仿生组件 、easy框架系列【Easy-Excel、easy-listener、easy-upsert】 授权框架…

数字乡村创新实践探索农业现代化与农村治理现代化新路径:科技赋能农村全面振兴与农民幸福生活

目录 引言 一、数字乡村与农业现代化 1、智慧农业技术的应用 2、农业产业链的数字化转型 二、数字乡村与农村治理现代化 1、农村信息化水平的提升 2、农村治理模式的创新 三、科技赋能农村全面振兴与农民幸福生活 1、提升农业生产效益与农民收入 2、促进农村产业结构…

[每周一更]-第93期:探索大型生成式聊天工具:从ChatGPT到未来

随着人工智能技术的不断进步&#xff0c;生成式聊天工具正逐渐成为人们日常生活中的一部分。这些工具利用深度学习技术和大规模语言模型的强大能力&#xff0c;能够与用户进行自然、流畅的对话&#xff0c;为我们提供了更加智能和个性化的交流体验。 ChatGPT&#xff1a;开启生…

mac电脑软件 Magnet v2.14.0免激活中文版

Magnet是一款窗口管理工具&#xff0c;适用于Mac操作系统。它可以帮助用户轻松地管理和组织多个应用程序的窗口&#xff0c;提高工作效率。 Magnet支持多种窗口布局和组合方式&#xff0c;可以将窗口分为左右、上下、四分之一等不同的比例和位置&#xff0c;用户可以根据实际需…

Linux:Redis7.2.4的简单在线部署(1)

注意&#xff1a;我写的这个文章是以最快速的办法去搭建一个redis的基础环境&#xff0c;作用是为了做实验简单的练习&#xff0c;如果你想搭建一个相对稳定的redis去使用&#xff0c;可以看我下面这个文章 Linux&#xff1a;Redis7.2.4的源码包部署&#xff08;2&#xff09;-…

测试人必看,小程序常见问题

小程序是一种轻盈的存在&#xff0c;用户无需为了使用它而下载和安装。它依附于微信这个强大的平台&#xff0c;只需轻轻一扫或一搜&#xff0c;它便跃然屏上&#xff0c;随时服务。小程序为我们带来更多前所未有的惊喜和便利&#xff0c;以下分享关于小程序相关的热门问题。 …

Adaptive Influence Maximization in DynamicSocial Networks

Abstract 为了通过社交网络传播信息和思想&#xff0c;种子策略旨在找到一小部分能够最大化影响力传播的种子用户&#xff0c;这被称为影响力最大化问题。尽管有大量的工作研究了这个问题&#xff0c;但现有的播种策略仅限于静态社交网络。事实上&#xff0c;由于数据传输速度快…

即席查询笔记

文章目录 一、Kylin4.x1、Kylin概述1.1 定义1.2 Kylin 架构1.3 Kylin 特点1.4 Kylin4.0 升级 2、Kylin 环境搭建2.1 简介2.2 Spark 安装和部署2.3 Kylin 安装和部署2.4 Kylin 启动环境准备2.5 Kylin 启动和关闭 3、快速入门3.1 数据准备3.2 Kylin项目创建入门3.3 Hive 和 Kylin…

【详细讲解下Photoshop】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

如何远程连接电脑?

远程连接电脑是一种技术&#xff0c;能够使用户在不同地点的电脑之间建立连接&#xff0c;实现互相访问和控制的功能。这项技术为我们提供了便利和效率&#xff0c;使得随时随地的协同办公、异地统一管理和远程数据采集管理成为可能。 【天联】的使用场景 远程连接电脑的应用非…

澳大利亚游戏音效巨头 Firelight Technologies 全面采用 Helix Core,助力打造热门游戏音效

Firelight Technologies 是一家总部位于澳大利亚墨尔本的公司&#xff0c;主营业务是电子游戏的音乐和音效制作&#xff0c;像《极限竞速》系列、《Roblox》和《我的世界》等爆款游戏的音效就出自该公司。其行业领先的工具 FMOD 为团队提供了一个强大的平台&#xff0c;用于实现…

Maven超详细使用

定义 是一款用于管理和构建java项目的工具 作用 1. 依赖管理 2. 统一项目结构 3. 项目构建 项目目录结构 POM 项目对象模型 (Project Object Model) POM (Project Object Model) &#xff1a;指的是项目对象模型&#xff0c;用来描述当前的maven项目。 仓库 本地仓库&#…

【大语言模型】基础:余弦相似度(Cosine similarity)

余弦相似度是一种用来确定两个向量之间相似性的度量。它在数据科学、信息检索和自然语言处理&#xff08;NLP&#xff09;等多个领域被广泛使用&#xff0c;用于度量在多维空间中两个向量之间角度的余弦。这个指标捕捉的是方向上的相似性而非大小&#xff0c;使其非常适合比较长…

前端页面显示时间与数据库时间差8小时

环境 jdk11mysql 8.0docker部署的 问题 突然发现页面上的数据比数据库的时间差了八个小时&#xff0c;然后我就开始排查问题。 首先看数据库的信息&#xff0c;发现时间都是没错的。 然后看一下ymal文件&#xff0c;是否是数据源链接写的有问题。 spring:datasource:url:…

攻防世界---misc---Wire1

1.下载题目链接是一个流量包 2.在Wireshark中分析&#xff0c;发现可疑流量 3.过滤http并且是get方式的&#xff0c;使用命令&#xff1a;http.request.methodGET 4.导出http对象 5.注意观察会发现&#xff0c;每隔一段会出现704&#xff0c;我们从上到下把704后面对应的ASCII码…

外卖电商抖客返利CPS公众号+小程序+APP+发单电商平台,知识产权,网站建设。

随着互联网的快速发展&#xff0c;电商和外卖业务日益繁荣&#xff0c;消费者对便捷、优惠的购物体验需求也在不断提升。为了满足这一需求&#xff0c;外卖电商CPS返利系统应运而生&#xff0c;成为了一种新型的消费模式。本文将详细介绍外卖电商CPS返利系统的功能及其优势&…