实现素描效果---OpenCV-Python开发指南(49)

简介: 实现素描效果---OpenCV-Python开发指南(49)

素描的实现原理


要实现一种图像处理的效果,首先我们需要掌握其实现的具体原理。


相信经常使用PS的用户肯定自己通过该软件处理过素描的效果实现。那么,我们可以参考一样PS实现素描效果的步骤:


1.去色:因为素描只有黑白两种颜色,所以彩色图像必须转换为灰度图像

2.复制去色图层,并且反色。反色的公式为:Y(i,j)=255-X(i,j)

3.对反射图像进行高斯模糊

4.模糊后的图像叠加模式选择颜色减淡效果


而颜色减淡的公式如下:


C=MIN(A+(A+B)/(255-B),255)


C:混合结果


A:去色后的像素点


B:高斯模糊后的像素点


反色的实现


既然步骤中有反色的操作,那么在OpenCV中如何实现反色操作呢?


其实,实现反色可以通过cv2.addWeighted()函数来实现。原理是:用一张图片像素为0的图像与灰度图像进行叠加,而这个全0的像素图像宽高必须与原图的宽高一致,同时其gamma参数必须设置为255。


具体代码如下:

def sketch_effect(img):
    new_img = img.copy()
    h, w, n = img.shape
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    zero_img = np.zeros((h, w), dtype=np.uint8)
    gray = cv2.addWeighted(gray, -1, zero_img, 0, 255, 0)


反色运算换算成数学公式如下:


dst=src1alpha+src2beta+gamma


高斯滤波


通过上面的代码,我们实现了第一步转换为灰度图像,也实现了第二步进行反色操作。


接下来,我们需要做的就是实现高通滤波。高通滤波在17篇博文图像平滑处理中已经介绍。实现高通滤波的函数为:cv2.GaussianBlur()。


下面,我们来对图像进行第三个操作:对反色图像进行高通滤波。代码如下:

def sketch_effect(img):
    h, w, n = img.shape
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    zero_img = np.zeros((h, w), dtype=np.uint8)
    anti_color = cv2.addWeighted(gray, -1, zero_img, 0, 255, 0)
    cv2.imshow("2", anti_color)
    grayGB = cv2.GaussianBlur(anti_color, (15, 15), 0)
    new_img = cv2.addWeighted(gray, 0.5, grayGB, 0.5, 0)
    return new_img
if __name__ == "__main__":
    img = cv2.imread("4.jpg")
    cv2.imshow("0", img)
    cv2.imshow("1", sketch_effect(img))
    cv2.waitKey()
    cv2.destroyAllWindows()


运行之后效果如下:


左0为原图,中间1为实现的素描效果,右2为反色图像。

相关文章
|
7月前
|
数据采集 存储 XML
深入浅出:基于Python的网络数据爬虫开发指南
【2月更文挑战第23天】 在数字时代,数据已成为新的石油。企业和个人都寻求通过各种手段获取互联网上的宝贵信息。本文将深入探讨网络爬虫的构建与优化,一种自动化工具,用于从网页上抓取并提取大量数据。我们将重点介绍Python语言中的相关库和技术,以及如何高效、合法地收集网络数据。文章不仅为初学者提供入门指导,也为有经验的开发者提供进阶技巧,确保读者能够在遵守网络伦理和法规的前提下,充分利用网络数据资源。
|
4月前
|
机器学习/深度学习 XML 搜索推荐
图像自动化保存工具:Python脚本开发指南
图像自动化保存工具:Python脚本开发指南
|
7月前
|
开发工具 Python
【分享Python代码】图片转化为素描画
【分享Python代码】图片转化为素描画
69 2
|
数据采集 JavaScript 前端开发
Web爬虫开发指南:使用Python的BeautifulSoup和Requests库
Web爬虫是一种从互联网上获取数据的自动化工具,它可以用于抓取网页内容、提取信息和分析数据。Python提供了一些强大的库,其中BeautifulSoup和Requests是两个常用的工具,用于解析HTML内容和发起HTTP请求。本文将介绍如何使用BeautifulSoup和Requests库构建一个简单而有效的Web爬虫。
|
前端开发 API 数据库
Python网站开发指南:构建现代化、高效的Web应用
在当今数字化时代,网站已成为企业、组织以及个人展示自己的重要窗口。Python作为一种简洁、高效且易于学习的编程语言,被广泛运用于网站开发领域。本文将向您介绍如何使用Python进行网站开发,包括常用的Web框架、关键技术和最佳实践。
|
计算机视觉
实现抖音时光倒流效果---OpenCV-Python开发指南(56)
实现抖音时光倒流效果---OpenCV-Python开发指南(56)
193 1
实现抖音时光倒流效果---OpenCV-Python开发指南(56)
python小玩意——图片转素描
python小玩意——图片转素描
python小玩意——图片转素描
|
程序员 Python
图片转素描风格处理软件详解(Python实现,含UI界面及代码)
图片转素描风格处理软件详解(Python实现,含UI界面及代码)
199 0
|
计算机视觉
实现抖音慢动作效果---OpenCV-Python开发指南(57)
实现抖音慢动作效果---OpenCV-Python开发指南(57)
245 1
|
算法
实现人脸美白算法---OpenCV-Python开发指南(59)
实现人脸美白算法---OpenCV-Python开发指南(59)
661 0
实现人脸美白算法---OpenCV-Python开发指南(59)