Python图像处理丨5种图像处理特效

摘要:本篇文章主要讲解了图像常见的特效处理,从处理效果图、算法原理、代码实现三个步骤进行详细讲解,涉及图像素描特效、怀旧特效、光照特效、流年特效、图像滤镜等。

一.图像素描特效

图像素描特效会将图像的边界都凸显出来,通过边缘检测及阈值化处理能实现该功能。一幅图像的内部都具有相似性,而在图像边界处具有明显的差异,边缘检测利用数学中的求导来扩大这种变化。但是求导过程中会增大图像的噪声,所以边缘检测之前引入了高斯滤波降噪处理。本文的图像素描特效主要经过以下几个步骤:

  • 调用cv2.cvtColor()函数将彩色图像灰度化处理;
  • 通过cv2.GaussianBlur()函数实现高斯滤波降噪;
  • 边缘检测采用Canny算子实现;
  • 最后通过cv2.threshold()反二进制阈值化处理实现素描特效。

其运行代码如下所示。

最终输出结果如下图所示,它将彩色图像素描处理。原图是作者去年九月份拍摄于喀纳斯,真的很美~

图像的素描特效有很多种方法,本文仅提供了一种方法,主要提取的是图像的边缘轮廓,还有很多更精细的素描特效方法,提取的轮廓更为清晰,如下图所示。希望读者能自行扩展相关算法知识,并实现对应的效果。

二.图像怀旧特效

图像怀旧特效是指图像经历岁月的昏暗效果,如图所示,左边”src”为原始图像,右边”dst”为怀旧特效图像。

怀旧特效是将图像的RGB三个分量分别按照一定比例进行处理的结果,其怀旧公式如下所示:

Python实现代码主要通过双层循环遍历图像的各像素点,再结合该公式计算各颜色通道的像素值,最终生成如图所示的效果,其完整代码如下。

三.图像光照特效

图像光照特效是指图像存在一个类似于灯光的光晕特效,图像像素值围绕光照中心点呈圆形范围内的增强。如下图所示,该图像的中心点为(192,192),光照特效之后中心圆范围内的像素增强了200。

Python实现代码主要是通过双层循环遍历图像的各像素点,寻找图像的中心点,再通过计算当前点到光照中心的距离(平面坐标系中两点之间的距离),判断该距离与图像中心圆半径的大小关系,中心圆范围内的图像灰度值增强,范围外的图像灰度值保留,并结合边界范围判断生成最终的光照效果。

四.图像流年特效

流年是用来形容如水般流逝的光阴或年华,图像处理中特指将原图像转换为具有时代感或岁月沉淀的特效,其效果如图所示。

Python实现代码如下,它将原始图像的蓝色(B)通道的像素值开根号,再乘以一个权重参数,产生最终的流年效果。

五.图像滤镜特效

滤镜主要是用来实现图像的各种特殊效果,它在Photoshop中具有非常神奇的作用。滤镜通常需要同通道、图层等联合使用,才能取得最佳艺术效果。本小节将讲述一种基于颜色查找表(Look up Table)的滤镜处理方法,它通过将每一个原始颜色进行转换之后得到新的颜色。比如,原始图像的某像素点为红色(R-255, G-0, B-0),进行转换之后变为绿色(R-0, G-255, B-0),之后所有是红色的地方都会被自动转换为绿色,而颜色查找表就是将所有的颜色进行一次(矩阵)转换,很多的滤镜功能就是提供了这么一个转换的矩阵,在原始色彩的基础上进行颜色的转换。

假设现在存在一张新的滤镜颜色查找表,如图所示,它是一张512×512大小,包含各像素颜色分布的图像。下面这张图片另存为本地,即可直接用于图像滤镜处理。

滤镜特效实现的Python代码如下所示,它通过自定义getBRG()函数获取颜色查找表中映射的滤镜颜色,再依次循环替换各颜色。

滤镜特效的运行结果如图所示,其中左边”src”为原始风景图像,右边”dst”为滤镜处理后的图像,其颜色变得更为鲜艳,对比度更强。

六.本文小结

本篇文章主要讲解了图像常见的特效处理,从处理效果图、算法原理、代码实现三个步骤进行详细讲解,涉及图像素描特效、怀旧特效、光照特效、流年特效、图像滤镜等,这些知识点将为读者从事Python图像处理相关项目实践或科学研究提供一定基础。

参考文献:

Original: https://www.cnblogs.com/huaweiyun/p/16899707.html
Author: 华为云开发者联盟
Title: Python图像处理丨5种图像处理特效

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/806917/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • TODA项目Part1—后端项目设置与连接数据库

    TODA(Train Operation Data Analysis)系统 一、系统概况 开发框架:Django Rest Framework(后端)+Vue(前端)+Mysql(…

    Python 2023年8月4日
    049
  • 上周热点回顾(10.10-10.16)

    热点随笔: · 斗鱼 H5 直播原理解析,它是如何省了 80% 的 CDN 流量? (羽月技术)· 超强的纯 CSS 鼠标点击拖拽效果 (ChokCoco)· 10分钟教你写一个数…

    Python 2023年10月18日
    042
  • pytest框架-函数传参和fixture参数request

    目录 登录函数传参 request传一个参数 request传两个参数 实现demo登录操作; 登录的账号不能写死,有时候我想用账号1去登录,执行用例1,用账号2去登录执行用例2,…

    Python 2023年9月14日
    041
  • Django JSONField SQL注入漏洞 复现 & 原理分析

    关于这个漏洞前几天看了很多的文章,其实大部分payload是一样的,都是如何去构造,或者去命令执行复现一下,我一开始也是这样去做的,但是这个漏洞是怎么形成的,对我来说可能一知半解,…

    Python 2023年8月3日
    060
  • Python时间序列分析–ARIMA模型实战案例

    Python时间序列分析–ARIMA模型实战案例,利用ARIMA模型对时间序列进行分析的经典案例(详细代码) 本文将介绍使用Python来完成时间序列分析ARIMA模型的完整步骤与…

    Python 2023年8月2日
    040
  • .NET MAUI 安卓应用开发初体验

    一、.NET MAUI开发环境搭建&安卓SDK和安卓模拟器安装提示网络连接失败问题解决 引言 本节目标是帮助第一次搭建.NET MAUI开发环境,在下载安卓SDK和安卓模拟…

    Python 2023年10月14日
    057
  • Matplotlib绘制折线图,条形图,柱状图,面积图

    Matplotlib绘制折线图,条形图,柱状图,面积图 一.折线图 * 实例1,绘制未来15天内的最高气温和最低气温 二.绘制柱形图或者堆积柱形图 * 1. 绘制一个具有两组形状的…

    Python 2023年8月26日
    064
  • pip 版本过低 升级安装 多种方法最后成功!!

    有两种方法 第一 按照上面显示的输入 python -m pip install –upgrade pip 可能不太一样,按照上面的来,把两边引号中间的部分取出来输入在…

    Python 2023年8月3日
    073
  • 【Python从入门到精通】(九)Python中字符串的各种骚操作你已经烂熟于心了么?

    您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦。本文将重点介绍Python字符串的各种常用方法,字符串是实际开发中经常用到的,所有熟练的掌握它的各种用法显得尤为重要。干货满满,…

    Python 2023年6月3日
    093
  • 基于scrapy框架的爬虫基本步骤

    本文以爬取网站:代码的边城为例 1.安装scrapy框架 详细教程可以查看本站文章 点击跳转 2.新建scrapy项目 生成一个爬虫文件。在指定的目录打开cmd.exe文件,输入代…

    Python 2023年10月2日
    056
  • Django数据库常用字段及参数

    一、常见字段(经常使用到字段) 1、CharField 字符串字段(必须max_length 参数) 2、DateField 日期类型 date(auto_now =True自动更…

    Python 2023年8月6日
    044
  • 第五章 数据聚合与分组运算

    1.分组是指使用特定的条件将原数据划分为多个组,聚合在这里指的是,对每个分组中的数据执行某些操作,最后将计算的结果进行整合。 分组步骤: 拆分 :将数据集按照一些标准拆分为若干个组…

    Python 2023年8月21日
    067
  • 创建Django项目

    建立虚拟环境 创建项目目录 创建虚拟环境在创建的目录中,打开cmd或者PowerShell python -m venv ll_venv -m 将python模块当做脚本运行,运行…

    Python 2023年8月5日
    035
  • 如何使用 Yolov4 训练人脸口罩检测模型

    前言 疫情当下,出入医院等公共场所都被要求佩戴口罩。这篇博客将会介绍如何使用 Yolov4,训练一个人脸口罩检测模型(使用 Yolov4 的原因是目前只复现到了 v4 😇),代码地…

    Python 2023年10月20日
    029
  • Python开发游戏超简单 迷你跑步游戏

    前言 (文末送读者福利) ; 01、迷你跑步游戏 他用了不到一百行代码,就写出了值得一玩的2D动作游戏,怎么做到的呢? 在此之前,先向大家介绍一个游戏框架: pgzero。 该框架…

    Python 2023年9月23日
    078
  • Pytest教程系列(3)Pytest指令操作

    Pytest指令操作 1.执行指定的测试模块 pytest testpytest.py pytest 文件名2.执行指定的测试目录 pytest pytestdemo/ pytes…

    Python 2023年9月11日
    042
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球