OpenCV技术应用(6)— 暖色滤镜和冷色滤镜

**前言:****Hello大家好,我是小哥谈。**本节课就手把手教大家如何将一幅图像转化成暖色滤镜和冷色滤镜,希望大家学习之后能够有所收获~!🌈

目录

🚀1.技术介绍

🚀2.暖色滤镜

🚀3.冷色滤镜

🚀1.技术介绍

暖色滤镜又可以称作"暖色调"。需要注意的是,色调指的不是颜色,而是对一幅图像整体颜色的评价。通常可以从色相、明度、冷暖、纯度这4个方面来定义一幅图像的色调。例如,一幅图像有明确的色调:红调子是从色相来说的;稍暗的调子是从明度来说的;暖调子是从冷暖来说的;灰调子是从纯度来说的。

本案例的目的是让下图所示的图像实现暖色滤镜的效果。所谓暖色滤镜,就是让一幅图像的整体颜色偏红,进而达到暖色调的效果。

冷色滤镜又可以称作"冷色调"。其中,冷色调是按冷暖来说的。本实例的目的是让下图所示的图像实现冷色滤镜的效果。所谓冷色滤镜,就是让一幅图像的整体颜色偏蓝,进而达到冷色调的效果。


🚀2.暖色滤镜

一幅图像是由红色、绿色、蓝色这3个通道组成的,颜色通道一般有RGB和BGR两种,其中OpenCV采用的颜色通道是BGR。要想让一幅图像实现暖色滤镜的效果,即让一幅图像的整体颜色偏红,就要对这幅图像进行拆分通道处理。为了拆分图像中的通道,OpenCV提供了split()方法 。当使用split()方法按B→G→R的顺序拆分通道时,split()方法的语法格式如下所示:

python 复制代码
b, g, r = cv2.split(rgb_image)

参数说明:

b:B通道图像;

g:G通道图像;

r:R通道图像;

rgb_image:一幅RGB图像。

拆分图像中的通道后,调整R通道的值,即可实现暖色滤镜的效果。调整R通道的值的关键代码如下所示:

python 复制代码
r[:, :] = 255

为了在窗口显示这幅图像实现暖色滤镜的效果,就要对拆分且调整后的通道进行合并。因此,要借助OpenCV中用于合并通道的merge()方法。当使用merge()方法按B→G→R的顺序合并通道时,merge()方法的语法格式如下所示:

python 复制代码
bgr = cv2.merge([b, g, r])

参数说明:

bgr:按B→G→R的顺序合并通道后得到的图像;

b:B通道图像;

g:G通道图像;

r:R通道图像。

具体的实现代码如下所示:

python 复制代码
import cv2

img = cv2.imread(r"C:\Users\Lenovo\PycharmProjects\yolov5-master1\data\images\1.jpg") # 读取当前项目文件夹下的图像
cv2.imshow("rgb_image", img) # 窗口显示读取到的图像
b, g, r = cv2.split(img) # 拆分图像1.jpg的通道
r[:, :] = 255 # 将R通道的值调整为255
bgr_255 = cv2.merge([b, g, r]) # 按B→G→R的顺序合并通道
cv2.imshow("bgr_255", bgr_255) # 窗口显示R通道的值被调整为255的图像
cv2.waitKey() # 按下键盘上的任意按键后
cv2.destroyAllWindows() # 销毁显示图像的所有窗口

运行结果如下所示:


🚀3.冷色滤镜

要想让一幅图像实现冷色滤镜的效果,即让一幅图像的整体颜色偏蓝,就要对这幅图像进行拆分通道处理。为了拆分图像中的通道,OpenCV提供了split()方法。当使用split()方法按B→G→R的顺序拆分通道时,split()方法的语法格式如下所示:

python 复制代码
b, g, r = cv2.split(rgb_image)

参数说明:

b:B通道图像;

g:G通道图像;

r:R通道图像;

rgb_image:一幅RGB图像。

拆分图像中的通道后,调整B通道的值,即可实现冷色滤镜的效果。调整B通道的值的关键代码如下所示:

python 复制代码
b[:, :] = 255

为了在窗口显示这幅图像实现冷色滤镜的效果,就要对拆分且调整后的通道进行合并。因此,要借助OpenCV中用于合并通道的merge()方法。当使用merge()方法按B→G→R的顺序合并通道时,merge()方法的语法格式如下所示:

python 复制代码
bgr = cv2.merge([b, g, r])

参数说明:

bgr:按B→G→R的顺序合并通道后得到的图像;

b:B通道图像;

g:G通道图像;

r:R通道图像。

具体的实现代码如下所示:

python 复制代码
import cv2

img = cv2.imread(r"C:\Users\Lenovo\PycharmProjects\yolov5-master1\data\images\1.jpg") # 读取当前项目文件夹下的图像
cv2.imshow("rgb_image", img) # 窗口显示读取到的图像
b, g, r = cv2.split(img) # 拆分图像1.jpg的通道
b[:, :] = 255 # 将B通道的值调整为255
bgr_255 = cv2.merge([b, g, r]) # 按B→G→R的顺序合并通道
cv2.imshow("bgr_255", bgr_255) # 窗口显示B通道的值被调整为255的图像
cv2.waitKey() # 按下键盘上的任意按键后
cv2.destroyAllWindows() # 销毁显示图像的所有窗口

运行结果如下所示:


相关推荐
罗西的思考20 小时前
AI Agent框架探秘:拆解 OpenHands(10)--- Runtime
人工智能·算法·机器学习
冬奇Lab21 小时前
OpenClaw 源码精读(2):Channel & Routing——一条消息如何找到它的 Agent?
人工智能·开源·源码阅读
冬奇Lab21 小时前
一天一个开源项目(第38篇):Claude Code Telegram - 用 Telegram 远程用 Claude Code,随时随地聊项目
人工智能·开源·资讯
格砸1 天前
从入门到辞职|从ChatGPT到OpenClaw,跟上智能时代的进化
前端·人工智能·后端
可观测性用观测云1 天前
可观测性 4.0:教系统如何思考
人工智能
sunny8651 天前
Claude Code 跨会话上下文恢复:从 8 次纠正到 0 次的工程实践
人工智能·开源·github
小笼包包仔1 天前
OpenClaw 多Agent软件开发最佳实践指南
人工智能
smallyoung1 天前
AgenticRAG:智能体驱动的检索增强生成
人工智能
_skyming_1 天前
OpenCode 如何做到结果不做自动质量评估,为什么结果还不错?
人工智能
HXhlx1 天前
CART决策树基本原理
算法·机器学习