Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之八 简单水彩画效果
Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之八 简单水彩画效果
目录
Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之八 简单水彩画效果
一、简单介绍
二、简单图像浮雕效果实现原理
三、简单水彩画效果案例实现简单步骤
四、注意事项:
一、简单介绍
Python是一种跨平台的计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。Python是一种解释型脚本语言,可以应用于以下领域: Web 和 Internet开发、科学计算和统计、人工智能、教育、桌面界面开发、软件开发、后端开发、网络爬虫。
这里使用 Python 基于 OpenCV 进行视觉图像处理,......
二、简单图像浮雕效果实现原理
水彩画是一种具有独特风格的绘画形式,其特点包括:
色彩丰富:水彩画常常使用鲜艳的色彩,色彩层次丰富,可以呈现出丰富多彩的效果。
柔和渐变:水彩画的色彩过渡通常比较柔和,可以呈现出平滑的渐变效果,使得画面更加柔和自然。
透明质感:水彩画具有一种透明质感,颜色之间可以相互渗透,形成柔和的色彩层次。
颜料晕染:在水彩画中,颜料常常会晕染开来,形成具有艺术感染力的效果。
要实现水彩画效果,可以采用以下方法:
-
模糊处理:对图像进行模糊处理,可以使得图像中的细节变得柔和,呈现出水彩画的特有质感。常见的模糊方法包括高斯模糊、中值模糊等。
-
边缘保留滤波:边缘保留滤波可以保留图像的边缘信息,同时对图像的其他部分进行模糊处理,从而增强图像的整体层次感和质感。
-
颜色量化:对图像的颜色进行量化处理,可以降低图像的色彩深度,使得图像的色彩更加柔和,符合水彩画的特点。
-
纹理增强:通过增强图像的纹理信息,可以使得图像更加丰富多彩,增强水彩画的艺术感染力。
-
局部调整:根据实际需求,对图像的局部区域进行调整,可以进一步增强水彩画的效果,使得画面更加丰富多彩。
实现原理:
1、灰度转换:首先,将彩色图像转换为灰度图像,以减少处理的复杂度。
将彩色图像转换为灰度图像,通常可以使用以下函数:
gray_image = cv2.cvtColor(color_image, cv2.COLOR_BGR2GRAY)这里
color_image是彩色图像,cv2.COLOR_BGR2GRAY表示将BGR格式的彩色图像转换为灰度图像。
2、中值模糊处理:对灰度图像进行中值模糊处理,以减少图像中的噪声,使得后续的边缘检测更加准确。
对灰度图像进行中值模糊处理,可以使用以下函数:
blurred_image = cv2.medianBlur(gray_image, ksize)这里
ksize是中值模糊的核大小,一般取奇数,表示模糊的程度。
3、边缘检测:使用 Laplacian 算子进行边缘检测,以获取图像中的边缘信息。
使用 Laplacian 算子进行边缘检测,可以使用以下函数:
edges = cv2.Laplacian(blurred_image, ddepth, ksize)这里
ddepth表示输出图像的深度(通常设置为cv2.CV_64F),ksize是 Laplacian 算子的核大小。
4、边缘二值化:对边缘图像进行二值化处理,得到一个边缘掩码,其中边缘部分为白色(255),非边缘部分为黑色(0)。
对边缘图像进行二值化处理,可以使用以下函数:
_, edge_binary = cv2.threshold(edges, threshold, max_val, cv2.THRESH_BINARY)这里
threshold是阈值,超过阈值的像素设为max_val,否则设为0。
5、颜色量化:对原始彩色图像进行颜色量化处理,保留图像的边缘特征,同时降低图像的颜色深度。
对原始彩色图像进行颜色量化处理,保留图像的边缘特征,可以使用以下函数:
quantized_image = cv2.cvtColor(color_image, cv2.COLOR_BGR2LAB)
这里将彩色图像转换到 LAB 色彩空间,这种颜色空间对颜色量化非常友好。
6、合并处理:将颜色量化后的图像与边缘掩码进行合并,只保留图像中的边缘部分,并对非边缘部分进行遮罩,从而生成水彩画效果的图像。
合并处理,可以通过以下函数实现:
result_image = cv2.bitwise_and(quantized_image, quantized_image, mask=edge_binary)这里的关键函数是
cv2.bitwise_and(),它是 OpenCV 中用于按位与运算的函数。具体参数含义如下:
quantized_image: 颜色量化后的图像。quantized_image: 作为第二个参数,这里与第一个参数相同,表示进行按位与运算的第二个图像。mask: 边缘掩码,即二值化后的边缘图像。只有与该掩码中对应位置为白色的像素才会被保留,其他像素会被置为0。这样处理后,结果图像中只会保留原始彩色图像的边缘部分,非边缘部分会被遮罩掉,生成水彩画效果的图像。
三、简单水彩画效果案例实现简单步骤
1、编写代码

2、运行效果

3、具体代码
"""
简单水彩画效果"""import cv2def watercolor_effect(image):"""水彩画效果:param image::return:"""# 将图像转换为灰度图像gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 对灰度图像进行中值模糊处理blurred = cv2.medianBlur(gray, 15)# 对模糊处理后的图像进行边缘检测edges = cv2.Laplacian(blurred, cv2.CV_8U, ksize=5)# 对边缘图像进行二值化处理_, mask = cv2.threshold(edges, 100, 255, cv2.THRESH_BINARY_INV)# 对原始图像进行颜色量化quantized = cv2.edgePreservingFilter(image, flags=1, sigma_s=60, sigma_r=0.4)# 将颜色量化后的图像与边缘掩码进行合并watercolor = cv2.bitwise_and(quantized, quantized, mask=mask)return watercolordef main():# 读取图像image = cv2.imread('Images/DogFace.jpg')# 设置窗口属性,并显示图片cv2.namedWindow("Dog", cv2.WINDOW_KEEPRATIO)cv2.imshow("Dog", image)# 应用水彩画效果watercolor_image = watercolor_effect(image)# 设置窗口属性,并显示图片cv2.namedWindow("Watercolor Image", cv2.WINDOW_KEEPRATIO)cv2.imshow('Watercolor Image', watercolor_image)cv2.waitKey(0)cv2.destroyAllWindows()if __name__ == "__main__":main()
四、注意事项:
-
参数调整:水彩画效果的质量受到参数的影响,尤其是中值模糊处理、边缘检测和颜色量化的参数。可以根据实际情况调整参数,以获得最佳的效果。
-
灰度处理:在处理彩色图像之前,首先要将其转换为灰度图像。这是因为水彩画效果通常只应用于单通道图像。
-
效率考虑:水彩画效果的处理可能会比较耗时,尤其是在边缘检测和颜色量化方面。因此,在处理大尺寸图像时,需要考虑到效率问题。
相关文章:
Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之八 简单水彩画效果
Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之八 简单水彩画效果 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之八 简单水彩画效果 一、简单介绍 二、简单图像浮雕效果实现原理 三、简单水彩画效果案例实现简单步骤 四、注意事项…...
Chrome浏览器 安装Vue插件vue-devtools
前言 vue-devtools 是一个为 Vue.js 开发者设计的 Chrome 插件。它可以让你更轻松地审查和调试 Vue 应用程序。与普通的浏览器控制台工具不同,Vue.js devtools 专为 Vue 的响应性数据和组件结构量身定做。 1. 功能介绍 组件树浏览:这个功能可以让你查…...
相册清理大师-手机重复照片整理、垃圾清理软件
相册清理大师是一款超级简单实用的照片视频整理工具。通过便捷的操作手势,帮助你极速整理相册中的照片和视频、释放手机存储空间。 【功能简介】 向上滑动:删除不要的照片 向左滑动:切换下一张照片 向右滑动:返回上一张照片 整理分…...
【GitLab】Ubuntu 22.04 快速安装 GitLab
在 Ubuntu 22.04 上安装最新版本的 GitLab,可以按照以下步骤操作: 1. 更新系统: 在终端中执行以下命令以确保系统是最新的: sudo apt update sudo apt upgrade2. 安装依赖: 安装 GitLab 所需的依赖包: …...
Linux重点思考(下)--shell脚本使用以及内核开发
Linux重点思考(下)--shell脚本使用和组合拳 shell脚本的基础算法shell脚本写123...n的值,说思路Shell 脚本用于执行服务器性能测试的死循环Shell 脚本备份和定时清理垃圾文件 shell脚本的内核开发正向映射反向映射 shell脚本的基础算法 shell脚本写123……...
2024世界技能大赛某省选拔赛“网络安全项目”B模块--应急响应解析
广东省第三届职业技能大赛“网络安全项目”B模块任务书 PS: 关注鱼影安全第一部分 网络安全事件响应任务 1:应急响应第二部分 数字取证调查第三部分 应用程序安全:需要环境可以私信博主~PS: 关注鱼影安全 模块 B 竞赛项目试题 本文件为:2024世界技能大赛某省选拔赛-模块 B …...
苹果与百度合作,将在iPhone 16中使用生成式AI
3月25日,《科创板日报》消息,苹果将与百度进行技术合作,为今年即将发布的iPhone16、Mac系统和iOS 18提供生成式AI(AIGC)功能。 据悉,苹果曾与阿里巴巴以及另外一家国产大模型厂商进行了技术合作洽谈。最终…...
java中的单例模式
一、描述 单例模式就是程序中一个类只能有一个对象实例 举个例子: //引出单例模式,一个类中只能由一个对象实例 public class Singleton1 {private static Singleton1 instance new Singleton1();//通过这个方法来获取实例public static Singleton1 getInstance…...
pytorch笔记篇:pandas之数据预处理(更新中)
pytorch笔记篇:pandas之数据预处理 pytorch笔记篇:pandas之数据预处理(更新中)测试例代码相关的算子 pytorch笔记篇:pandas之数据预处理(更新中) 测试例代码 print(train_data.iloc[0:4, [0, 1, 2, 3, -3, -2, -1]]) # (※1) 为什么test_da…...
【安全用电管理系统的应用如何保证用电安全】Acrel-6000安科瑞智慧安全用电解决方案
政策背景 国家部委 ※2017年5月3日国务院安委会召开电气火灾综合治理工作视频会议,决定在全国范围内组织开展为期3年的电气火灾综合治理工作。 公安部领导 ※公安部副部长李伟强调:向科技要战斗力,加快推进“智慧消防”建设不断提升火灾防控…...
数据分析之POWER Piovt透视表分析
将几个数据表之间进行关联 生成数据透视表 超级透视表这里的字段包含子字段 这三个月份在前面的解决办法 1.选中这三个月份,鼠标可移动的时候移动到后面 2.在原数据进行修改 添加列获取月份,借助month的函数双击日期 选择月份这列----按列排序-----选择月…...
机器人寻路算法双向A*(Bidirectional A*)算法的实现C++、Python、Matlab语言
机器人寻路算法双向A*(Bidirectional A*)算法的实现C、Python、Matlab语言 最近好久没更新,在搞华为的软件挑战赛(软挑),好卷只能说。去年还能混进32强,今年就比较迷糊了,这东西对我…...
智慧公厕产品的特点、应用场景
随着城市化进程的加速和智能科技的不断发展,智慧公厕作为城市管理的重要组成部分,逐渐成为了现代城市的一道靓丽风景线。它的特点和应用场景备受人们关注和喜爱。 智慧公厕的特点有哪些呢?首先,它智能化的设备和感应技术为其特点…...
vue 插槽(二)
渲染作用域 插槽内容可以访问到父组件的数据作用域,因为插槽内容本身是在父组件模板中定义的。举例来说: <span>{{ message }}</span> <FancyButton>{{ message }}</FancyButton> 这里的两个 {{ message }} 插值表达式渲染…...
【Java】MyBatis快速入门及详解
文章目录 1. MyBatis概述2. MyBatis快速入门2.1 创建项目2.2 添加依赖2.3 数据准备2.4 编写代码2.4.1 编写核心配置文件2.4.2 编写SQL映射文件2.4.3 编写Java代码 3. Mapper代理开发4. MyBatis核心配置文件5. 案例练习5.1 数据准备5.2 查询数据5.2.1 查询所有数据5.2.2 查询单条…...
Matlab将日尺度数据转化为月尺度数据
日尺度转化为月尺度 clcclear all% load datadata xlread(data.xlsx) % 例如该数据为1961-01-01至2022-12-31,共计22645天data data(:,1:3) % 该数据有22645行,数据分别为降水,气温,湿度等三列dt datetime(1961-01-01):datatim…...
【技巧】PyTorch限制GPU显存的可使用上限
转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] 从 PyTorch 1.4 版本开始,引入了一个新的功能 torch.cuda.set_per_process_memory_fraction(fraction, device),这个功能允许用户为特定的 GPU 设备设置进程可使用的显存上限比例。 测试代…...
深度理解文件操作
目录 文件 文件名: 标准流 文件指针 文件的打开和关闭 文件的顺序读写: 使用部分 文件的打开和关闭 文件 文件分两种,第一种是程序文件,后一种是数据文件。 程序文件:包括源程序文件(后缀为.c&…...
【搜索引擎2】实现API方式调用ElasticSearch8接口
1、理解ElasticSearch各名词含义 ElasticSearch对比Mysql Mysql数据库Elastic SearchDatabase7.X版本前有Type,对比数据库中的表,新版取消了TableIndexRowDocumentColumnmapping Elasticsearch是使用Java开发的,8.1版本的ES需要JDK17及以上…...
配置小程序的服务器域名
准备工作 拥有一个已注册的域名:确保您已经注册了一个符合国家和地区相关法律法规要求的域名。 完成域名备案(如有必要):根据国家和地区的法律法规,某些情况下可能需要对域名进行备案才能用于互联网服务。 配置 DNS&…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...
AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
基于PHP的连锁酒店管理系统
有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...
算术操作符与类型转换:从基础到精通
目录 前言:从基础到实践——探索运算符与类型转换的奥秘 算术操作符超级详解 算术操作符:、-、*、/、% 赋值操作符:和复合赋值 单⽬操作符:、--、、- 前言:从基础到实践——探索运算符与类型转换的奥秘 在先前的文…...
rm视觉学习1-自瞄部分
首先先感谢中南大学的开源,提供了很全面的思路,减少了很多基础性的开发研究 我看的阅读的是中南大学FYT战队开源视觉代码 链接:https://github.com/CSU-FYT-Vision/FYT2024_vision.git 1.框架: 代码框架结构:readme有…...
门静脉高压——表现
一、门静脉高压表现 00:01 1. 门静脉构成 00:13 组成结构:由肠系膜上静脉和脾静脉汇合构成,是肝脏血液供应的主要来源。淤血后果:门静脉淤血会同时导致脾静脉和肠系膜上静脉淤血,引发后续系列症状。 2. 脾大和脾功能亢进 00:46 …...
