跟我学Python图像处理丨图像特效处理:毛玻璃、浮雕和油漆特效

摘要:本文讲解常见的图像特效处理,从而让读者实现各种各样的图像特殊效果,并通过Python和OpenCV实现。

本文分享自华为云社区《[Python图像处理] 二十四.图像特效处理之毛玻璃、浮雕和油漆特效》,作者:eastmount。

一.图像毛玻璃特效

图像毛玻璃特效如图所示,左边为原始图像,右边为毛玻璃特效图像。它是用图像邻域内随机一个像素点的颜色来替代当前像素点颜色的过程,从而为图像增加一个毛玻璃模糊的特效。

PS:该图片为作者去喀纳斯拍摄,真心美!

跟我学Python图像处理丨图像特效处理:毛玻璃、浮雕和油漆特效

Python实现代码主要是通过双层循环遍历图像的各像素点,再用定义的随机数去替换各邻域像素点的颜色,具体代码如下所示。

#coding:utf-8
import cv2
import numpy as np
#读取原始图像
src = cv2.imread('scenery.png')
#新建目标图像
dst = np.zeros_like(src)
#获取图像行和列
rows, cols = src.shape[:2]
#定义偏移量和随机数
offsets = 5
random_num = 0
#毛玻璃效果: 像素点邻域内随机像素点的颜色替代当前像素点的颜色
for y in range(rows - offsets):
 for x in range(cols - offsets):
 random_num = np.random.randint(0,offsets)
 dst[y,x] = src[y + random_num,x + random_num]
#显示图像
cv2.imshow('src',src)
cv2.imshow('dst',dst)
cv2.waitKey()
cv2.destroyAllWindows()

二.图像浮雕特效

图像浮雕特效是仿造浮雕艺术而衍生的处理,它将要呈现的图像突起于石头表面,根据凹凸程度不同形成三维的立体效果。Python绘制浮雕图像是通过勾画图像的轮廓,并降低周围的像素值,从而产生一张具有立体感的浮雕效果图。传统的方法是设置卷积核,再调用OpenCV的filter2D()函数实现浮雕特效。该函数主要是利用内核实现对图像的卷积运算,其函数原型如下所示:

dst = filter2D(src, ddepth, kernel[, dst[, anchor[, delta[, borderType]]]])

  • src表示输入图像
  • dst表示输出的边缘图,其大小和通道数与输入图像相同
  • ddepth表示目标图像所需的深度
  • kernel表示卷积核,一个单通道浮点型矩阵
  • anchor表示内核的基准点,其默认值为(-1,-1),位于中心位置
  • delta表示在储存目标图像前可选的添加到像素的值,默认值为0
  • borderType表示边框模式

核心代码如下:

kernel = np.array([[-1,0,0],[0,1,0],[0,0,0]])
output = cv2.filter2D(src, -1, kernel)

本小节将直接对各像素点进行处理,采用相邻像素相减的方法来得到图像轮廓与平面的差,类似边缘的特征,从而获得这种立体感的效果。为了增强图片的主观感受,还可以给这个差加上一个固定值,如150。实现效果如图所示。

跟我学Python图像处理丨图像特效处理:毛玻璃、浮雕和油漆特效

Python通过双层循环遍历图像的各像素点,使用相邻像素值之差来表示当前像素值,从而得到图像的边缘特征,最后加上固定数值150得到浮雕效果,具体代码如下所示。

# -*- coding: utf-8 -*-
import cv2
import numpy as np
#读取原始图像
img = cv2.imread('scenery.png', 1)
#获取图像的高度和宽度
height, width = img.shape[:2]
#图像灰度处理
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#创建目标图像
dstImg = np.zeros((height,width,1),np.uint8)
#浮雕特效算法:newPixel = grayCurrentPixel - grayNextPixel + 150
for i in range(0,height):
 for j in range(0,width-1):
 grayCurrentPixel = int(gray[i,j])
 grayNextPixel = int(gray[i,j+1])
 newPixel = grayCurrentPixel - grayNextPixel + 150
 if newPixel > 255:
 newPixel = 255
 if newPixel < 0:
 newPixel = 0
 dstImg[i,j] = newPixel
#显示图像
cv2.imshow('src', img)
cv2.imshow('dst',dstImg)
#等待显示
cv2.waitKey()
cv2.destroyAllWindows()

三.图像油漆特效

图像油漆特效类似于油漆染色后的轮廓图形,它主要采用自定义卷积核和cv2.filter2D()函数实现,Python实现代码主要通过Numpy定义卷积核,再进行特效处理,卷积核如公式(13-1)所示,其中心权重为10,其余值均为-1。

跟我学Python图像处理丨图像特效处理:毛玻璃、浮雕和油漆特效

完整代码如下所示:

# -*- coding: utf-8 -*-
import cv2
import numpy as np
#读取原始图像
src = cv2.imread('scenery.png')
#图像灰度处理
gray = cv2.cvtColor(src,cv2.COLOR_BGR2GRAY)
#自定义卷积核
kernel = np.array([[-1,-1,-1],[-1,10,-1],[-1,-1,-1]])
#图像浮雕效果
output = cv2.filter2D(gray, -1, kernel)
#显示图像
cv2.imshow('Original Image', src)
cv2.imshow('Emboss_1',output)
#等待显示
cv2.waitKey()
cv2.destroyAllWindows()

输出结果如下图所示:

跟我学Python图像处理丨图像特效处理:毛玻璃、浮雕和油漆特效

参考文献:

 

点击关注,第一时间了解华为云新鲜技术~

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:跟我学Python图像处理丨图像特效处理:毛玻璃、浮雕和油漆特效 - Python技术站

(0)
上一篇 2023年4月2日
下一篇 2023年4月2日

相关文章

  • 华为云GaussDB践行数字化,护航证券保险高质量发展

    摘要:华为云数据库解决方案架构师章哲在由先进数通与华为联合开展的“7+1”系列银行业数字化转型实践交流活动上围绕华为云GaussDB多年来的技术探索和应用实践进行了分享。 近日,由先进数通与华为联合开展的“7+1”系列银行业数字化转型实践交流活动北京站圆满落幕。活动汇聚金融科技先锋企业、金融行业专家和金融机构,共同探讨证券行业保险类业务场景的创新与发展。华为…

    MySQL 2023年4月17日
    00
  • 一文详解RocketMQ-Spring的源码解析与实战

    摘要:这篇文章主要介绍 Spring Boot 项目使用 rocketmq-spring SDK 实现消息收发的操作流程,同时笔者会从开发者的角度解读 SDK 的设计逻辑。 本文分享自华为云社区《RocketMQ-Spring : 实战与源码解析一网打尽》,作者:勇哥java实战分享。 RocketMQ 是大家耳熟能详的消息队列,开源项目 rocketmq-…

    Java 2023年4月25日
    00
  • 云服务过载控制的前世今生

    摘要:服务过载在云时代是必然存在的,如何解决与应对成为了云服务开发、运营与运维的关键要素,通过过载场景现象、基础过载控制等能力,来应对出现的服务/应用过载。 本文分享自华为云社区《云服务过载控制的前世今生》,作者:SRE确定性运维 。 1.为什么会有过载? 过载,是服务或应用处理的请求超过了自身所能承载的能力,造成服务或应用自身处理请求时延变慢、错误率增加,…

    云计算 2023年4月17日
    00
  • 发现Mysql的主从数据库没有同步,差点凉凉了

    摘要:今天发现Mysql的主从数据库没有同步,瞬间整个人头皮发麻。 本文分享自华为云社区《糟了,生产环境数据竟然不一致,人麻了!》,作者:冰 河 。 今天发现Mysql的主从数据库没有同步 先上Master库: mysql>show processlist; 查看下进程是否Sleep太多。发现很正常。 show master status; 也正常。 …

    MySQL 2023年4月17日
    00
  • 【一行代码秒上云】Serverless六步构建全栈网站

    摘要:Serverless怎么玩?听一千道一万不如亲手来实践,跟着我们以华为云Serverless实践FunctionGraph来免费体验一下六步构建全栈网站吧 前言: Serverless怎么玩?听一千道一万不如亲手来实践,跟着我们以华为云Serverless实践FunctionGraph来免费体验一下六步构建全栈网站吧!五分钟就完成的应用上云,你值得拥有…

    云计算 2023年4月17日
    00
  • 2步打通ModelArts和Astro,实现AI应用快速落地

    摘要:本文以 ModelArts 的“找云宝”自动学习 AI 应用为例,结合低代码平台 Astro 轻应用快速实现一个“找云宝”小应用。 本文分享自华为云社区《【我与ModelArts的故事】2步打通 ModelArts 和 Astro 实现 AI 应用落地》,作者:胡琦。 引言 随着 GPT 火爆全球, 人工智能(AI)逐渐成为当今最具创新性和前景的技术之…

    人工智能概论 2023年5月9日
    00
  • 读书笔记丨理解和学习事务,让你更好地融入云原生时代

    摘要:分布式事务与云原生技术有很强的关联,可以帮助云原生应用程序实现高效的分布式事务处理。 本文分享自华为云社区《理解和学习事务,让你更好地融入云原生时代》,作者: breakDawn。 随着云原生的概念越来越火,服务的架构应该如何发展和演进,成为很多程序员关心的话题。大名鼎鼎的《深入理解java虚拟机》一书作者于21年推出了新作《凤凰架构》,从这本书中可以…

    云计算 2023年5月8日
    00
  • 一文读懂华为云云原生产品及开源实践

    摘要:本文主要从华为云原生产品及开源产品两个层面进行展开,详述华为云在云原生领域的最佳实践。 本文分享自华为云社区《【云驻共创】华为云云原生产品及开源实践》,作者:kaliarch。 一 云原生发展阶段和趋势 回首过去,云计算的快速发展,为众多行业的数字化转型提供了推力,也提升了企业数字化转型的技术革新,将科技创新与商业元素的不断融合,又催生出新的业务形态。…

    云计算 2023年4月17日
    00
合作推广
合作推广
分享本页
返回顶部