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

Posted Color Space

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一行代码实现灰色铅笔画彩色铅笔画和卡通画效果(C++/Python OpenCV源码)相关的知识,希望对你有一定的参考价值。

点击下方卡片,关注“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++:

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:​​​​​​​

import cv2src = 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++:​​​​​​​

Mat src = imread("yuan.png", IMREAD_COLOR);Mat result;stylization(src, result, 5, 0.6);imshow("Stylization", result);

Python:​​​​​​​

import cv2src = cv2.imread('yuan.png')dst = cv2.stylization(src, sigma_s=5, sigma_r=0.6)cv2.imshow('cartoon', dst)cv2.waitKey()cv2.destroyAllWindows()

原图:

 结果图:

欢迎大家加入OpenCV与AI深度学习官方微信群一起学习交流:

—THE END—

以上是关于一行代码实现灰色铅笔画彩色铅笔画和卡通画效果(C++/Python OpenCV源码)的主要内容,如果未能解决你的问题,请参考以下文章

在 OpenCV 中将图像转换为彩色铅笔素描

用PIL实现滤镜——素描铅笔画效果

Three.js铅笔手绘效果实现

笔画宽度变换(SWT)实现(Java、C#...)[关闭]

基于《Combining Sketch and Tone for Pencil Drawing Production》的图像铅笔画算法的实现

使用 CGPath 为笔画末端设置动画颜色