前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一行代码实现灰色铅笔画、彩色铅笔画和卡通画效果(C++/Python OpenCV源码)

一行代码实现灰色铅笔画、彩色铅笔画和卡通画效果(C++/Python OpenCV源码)

作者头像
Color Space
发布2021-11-04 17:08:04
6950
发布2021-11-04 17:08:04
举报

点击下方卡片,关注“OpenCV与AI深度学习

视觉/图像重磅干货,第一时间送达

导读

本文主要介绍在OpenCV中如何使用一行代码实现图像转灰色铅笔画、彩色铅笔画和卡通效果。

背景介绍

GAN(生成对抗网络)在深度学习领域的风靡,部分应归功于图像的风格迁移,各式各样的风格迁移效果更让人眼花缭乱。殊不知OpenCV的Photo模块中也提供了几个图像特效处理的方法,简单一行代码就可以实现图像转灰色铅笔画、彩色铅笔画和卡通画的效果。

使用介绍与效果演示

一、灰色铅笔画、彩色铅笔画效果

参数:

src

输入8位三通道图像

dst1

输出8位单通道图像(灰色铅笔画结果图)

dst2

与输入图像相同的通道数和大小(彩色铅笔画结果图)

sigma_s

取值范围0~200

sigma_r‍‍

取值范围0~1

shade_factor

取值范围0~0.1

sigma_s,sigma_r:

图像处理和计算机视觉中的大多数平滑滤波器(例如高斯滤波器或盒式滤波器)都有一个称为 sigma_s(用于 Sigma_Spatial)的参数,用于确定平滑量。典型的平滑滤波器用像素的相邻像素的加权和替换像素的值。邻域越大,过滤后的图像看起来越平滑。邻域的大小与参数 sigma_s 成正比。

就像其他平滑过滤器一样,sigma_s控制邻域的大小,sigma_r(用于 sigma_range)控制邻域内不同颜色的平均程度。较大的sigma_r 会产生较大的恒定颜色区域。

shade_factor:

范围 0 到 0.1 ,是输出图像强度的简单缩放。值越高,结果越亮。

代码演示与效果:

C++:

代码语言:javascript
复制
Mat src = imread("yuan.png", IMREAD_COLOR);
Mat imgGray, imgColor;
pencilSketch(src, imgGray, imgColor, 5, 0.1f, 0.03f);
imshow("Pencil Sketch", imgGray);
imshow("Color Pencil Sketch", imgColor);

Python:

代码语言:javascript
复制
import cv2
src = cv2.imread('yuan.png')
dst_gray, dst_color = cv2.pencilSketch(src, sigma_s=5, sigma_r=0.1, shade_factor=0.03)
cv2.imshow('gray_pencil', dst_gray)
cv2.imshow('color_pencil', dst_color)
cv2.waitKey()
cv2.destroyAllWindows()

原图:

灰色铅笔画效果:

彩色铅笔画效果:

二、卡通画效果

风格化旨在生成具有多种效果的数字图像,而不是专注于照片写实。边缘感知滤镜非常适合风格化,因为它们可以抽象出低对比度区域,同时保留或增强高对比度特征。

参数:

src

输入8位三通道图像

dst

与输入图像相同的通道数和大小(卡通画结果图)

sigma_s

取值范围0~200

sigma_r

取值范围0~1

代码演示与效果:

C++:

代码语言:javascript
复制
Mat src = imread("yuan.png", IMREAD_COLOR);
Mat result;
stylization(src, result, 5, 0.6);
imshow("Stylization", result);

Python:

代码语言:javascript
复制
import cv2
src = cv2.imread('yuan.png')
dst = cv2.stylization(src, sigma_s=5, sigma_r=0.6)
cv2.imshow('cartoon', dst)
cv2.waitKey()
cv2.destroyAllWindows()

原图:

结果图:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-10-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OpenCV与AI深度学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景介绍
  • 使用介绍与效果演示
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档