cv2.cvtColor的示例用法

-------------OpenCV教程集合-------------

Python教程99:一起来初识OpenCV(一个跨平台的计算机视觉库)

OpenCV教程01:图像的操作(读取+显示+保存+属性+获取和修改像素值)

OpenCV教程02:图像处理系统1.0(翻转+形态学+滤波+缩放+旋转)
OpenCV教程03:绘制图形(线段、矩形、圆形、椭圆、多边形、箭头线)+水印文本

cv2.cvtColor 是 OpenCV 库中用于转换图像颜色空间的一个非常有用的函数。它可以将图像从一个颜色空间转换到另一个颜色空间,比如从 BGR 转换到灰度、HSV、YCrCb 等。在 OpenCV 中,默认加载的图像颜色空间是 BGR(蓝绿红),而不是通常的 RGB(红绿蓝)。因此,在处理图像时,经常需要转换颜色空间。以下是一些基本的使用示例:

示例 1:将图像从 BGR(蓝绿红)颜色空间转换为灰度图像是最常见的用法之一。灰度图像是单通道的,每个像素的亮度值由原始图像的 BGR 值根据一定的权重计算得出。
在这里插入图片描述

import cv2# 读取图像
image = cv2.imread('example.png')# 使用cv2.COLOR_BGR2GRAY将图像转换为灰度图
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 显示原图和灰度图
cv2.imshow('Original Image', image)
cv2.imshow('Gray Image', gray_image)# 等待按键后关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()

2.BGR 到 RGB 的转换
由于 OpenCV 默认使用 BGR 格式加载图像,而在许多其他图像处理库(如 PIL 或 matplotlib)中,图像是以 RGB 格式处理的。因此,有时需要将 BGR 图像转换为 RGB 图像。

rgb_image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

注意,这个转换在大多数情况下可能不是必需的,因为许多图像处理任务(如特征检测、边缘检测等)在 BGR 或 RGB 空间中都能很好地工作。但是,当你需要将图像与其他库或框架一起使用时,这个转换就变得非常重要了。

示例 3:从BGR转换到HSV,常用于颜色分割和阈值处理。HSV(色调、饱和度、亮度)是一种更直观的颜色空间,它对于某些图像处理任务(如颜色分割、颜色追踪等)来说非常有用。将图像从 BGR 转换到 HSV 可以让你更容易地根据色调、饱和度和亮度来分析和处理图像。在这里插入图片描述

import cv2# 读取图像
image = cv2.imread('input.jpg')# 转换到HSV颜色空间
hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
cv2.imshow('hsv_image', hsv_image)
# 显示HSV图像(注意,显示时可能需要调整通道顺序)
hsv_split = cv2.split(hsv_image)
cv2.imshow('Hue Channel', hsv_split[0])
cv2.imshow('Saturation Channel', hsv_split[1])
cv2.imshow('Value Channel', hsv_split[2])cv2.waitKey(0)
cv2.destroyAllWindows()

示例4:从BGR转换到YCrCb
YCrCb颜色空间常用于肤色检测等应用。
在这里插入图片描述

import cv2# 读取图像
image = cv2.imread('example.png')# 转换到YCrCb颜色空间
ycrcb_image = cv2.cvtColor(image, cv2.COLOR_BGR2YCrCb)# 显示YCrCb图像
cv2.imshow('YCrCb Image', ycrcb_image)cv2.waitKey(0)
cv2.destroyAllWindows()

完毕!!感谢您的收看

----------★★历史博文集合★★----------

我的零基础Python教程,Python入门篇 进阶篇 视频教程 Py安装py项目 Python模块 Python爬虫 Json Xpath 正则表达式 Selenium Etree CssGui程序开发 Tkinter Pyqt5 列表元组字典数据可视化 matplotlib 词云图 Pyecharts 海龟画图 Pandas Bug处理 电脑小知识office自动化办公 编程工具 NumPy Pygame

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NSSCTF-Web题目22(弱比较、数组绕过)

目录 [鹤城杯 2021]Middle magic 1、题目 2、知识点 3、思路 [WUSTCTF 2020]朴实无华 4、题目 5、知识点 6、思路 [鹤城杯 2021]Middle magic 1、题目 2、知识点 代码审计,弱比较、数组绕过 3、思路 打开题目,出现源代码,我们进行审…

强行仅用time.localtime制作“日历牌”——全程记录“顶牛”“调戏”我的AI学习搭子

强行只用time.localtime制作“日历牌”,码好代码试炼通过,想榨取ai智能优化算法,结果失败。本文详细记录“顶牛”全过程。 (笔记模板由python脚本于2024年07月01日 19:16:26创建,本篇笔记适合喜欢python,喜欢搞“事儿”…

打卡第二十七天 455分发饼干 376摆动序列

第一题: 原题链接:455. 分发饼干 - 力扣(LeetCode) 思路: 将大的饼干来满足胃口大的孩子。 先将小孩子的胃口和饼干的尺寸进行排序。然后从后往前遍历胃口,饼干的尺寸也从后往前。如果饼干尺寸大于等于…

Android系统adb shell dumpsys activity processes

在Android系统中,adb shell dumpsys activity processes 命令是一个非常强大的工具,用于获取当前系统中所有运行进程的详细信息,包括它们的状态、内存使用情况、任务栈等。这对于开发者来说非常有用,尤其是在调试应用、分析系统性…

安装Gitlab+Jenkins

GItlab概述 GitLab概述: 是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。 Ruby on Rails 是一个可以使你开发、部署、维护 web 应用程序变得简单的框架。 GitLab拥有与…

【hot100】跟着小王一起刷leetcode -- 739. 每日温度

【hot100】跟着小王一起刷leetcode -- 739. 每日温度 739. 每日温度题目解读思路 代码总结 739. 每日温度 题目解读 739. 每日温度 老规矩,咱先看下题目。总结下来就是,你要返回一个answer数组,answer[i]中存储的应该是temperatures数组中…

Python在智慧农业中的实践:智能灌溉系统的自动化控制

Python在智慧农业中的实践:智能灌溉系统的自动化控制 Python凭借其强大的库支持和易读性,正逐步渗透到各行各业,成为推动技术革新的重要力量。今天,我们将聚焦智慧农业,通过一个生动的案例,探索Python如何…

解决ps暂存盘已满的问题

点击编辑->首选项->暂存盘 ps默认暂存盘使用的是c盘,我们改成d盘即可 然后重启ps

​​​​​​​​​​​​​​Spark Standalone集群环境

目录 Spark Standalone集群环境 修改配置文件 【workers】 【spark-env.sh】 【配置spark应用日志】 【log4j.properties】 分发到其他机器 启动spark Standalone 启动方式1:集群启动和停止 启动方式2:单独启动和停止 连接集群 【spark-shel…

详细介绍MySQL的索引(下)

索引的使用 同一条数据在未创建索引的情况下耗时: nick字段是未创建索引的 select * from t_user WHERE nick 邹丽;SHOW PROFILES; 耗时为: user_account字段创建了唯一索引 select * from t_user WHERE user_account 13781945844;SHOW PROFILES;…

PHP验证日本固定电话号码

日本电话号码格式众多,验证起来比较头大,现在咱们来一个简单的总结哈 为了简单起见,使用PCRE 函数preg_match通过匹配正则表达式来实现验证。 function checkGdTelLandline(string $str): int|false {return preg_match("/\A0(\d{1}[-…

git commit 怎么跳过 husky, commitlint 的检查

我们引入 husky, commitlint 是为了保障代码入库的质量,但是有些时候,我们需要应急处理,比如你在升级框架时,通常不是一两天能解决的,可能希望临时把代码提交到一个分支,而这个时候,你改造的代码…

0122__linux之eventfd理解

linux之eventfd理解-CSDN博客 Linux fd 系列 — eventfd 是什么?-CSDN博客

安装 VisualSVN Server提示HTTP服务无法启动的问题解决

安装 VisualSVN Server 版本:VisualSVN-Server-5.4.0-x64 安装包在安装到一半的时候,弹窗提示:HTTP服务无法启动,网上找了一大堆,说是service里面更改用户为本地用户什么的都没用用,点右键也无法启动。 …

配置Uptime Kuma固定前缀

在做ICT集成项目时,遇到需要对现网接口进行拨测的需求。搜索后尝试使用开源的Uptime Kuma组件完成现网接口拨测。 但该项目有个问题就是默认不支持配置固定前缀,这对现网进行请求转发会造成较大的影响。通过查看该项目的github后找到了问题的解决方案。S…

systemd指令之journalctl指令

systemd的历史由来及概述 在Linux系统的发展历程中,init进程一直是系统启动的核心。然而,这种传统的启动方式存在两个主要缺点: 启动时间长:init进程采用串行启动机制,只有在前一个进程启动完成后,才能启…

web自动化(三)鼠标操作键盘

selenuim 键盘操作 import timefrom selenium.webdriver.common.keys import Keys from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.wait import WebDriverWait from selen…

SQL语言基础特点、数据库系统

一、SQL的概述 (1) SQL全称: Structured Query Language,是结构化查询语言,用于访问和处理数据库的标准的计算机语言。 (2)SQL语言1974年由Boyce和Chamberlin提出,并首先在IBM公…

安卓h5打包系统设计

设计一个安卓H5打包系统,主要是为了将H5应用高效、便捷地转换为原生安卓应用(APK),以适应不同场景下的需求。下面是一个基本的设计框架: 1. 系统目标与需求分析 目标:实现一个用户友好的界面,使无编程基础的用户也能轻松将H5项目打包成安卓APP。需求: 支持H5项目上传与…

Leetcode秋招冲刺(专题10--12)

专题10:动态规划 题目509:斐波那契数(NO) 解题思路:动态五部曲 动态五部曲:这里我们用一个一维数组来保存递归的结果 确定dp数组以及下标的含义 dp[i]的定义为:第i个数的斐波那契数值是dp[i]…