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

发布时间:2022-07-01 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了一行代码实现灰色铅笔画、彩色铅笔画和卡通画效果(C++/Python OpenCV源码)脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

点击下方卡片,关注“OPEnCV与ai深度学习公众号

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

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

导读

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

背景介绍

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

使用介绍与效果演示

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

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

参数:

src输入8位三通道图像
dst1输出8位单通道图像(灰色铅笔画结果图)
dst2与输入图像相同的通道数和大小(彩色铅笔画结果图)
sigma_s取值范围0~200
sigma_r取值范围0~1
shade_factor取值范围0~0.1

sigma_s,sigma_rF1a;

图像处理和计算机视觉中的大多数平滑滤波器(例如高斯滤波器或盒式滤波器)都有一个称为 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()

原图:

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

灰色铅笔画效果:

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

彩色铅笔画效果:

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

二、卡通画效果

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

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

参数:

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()

原图:

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

 结果图:

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

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

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

—THE END—

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

脚本宝典总结

以上是脚本宝典为你收集整理的一行代码实现灰色铅笔画、彩色铅笔画和卡通画效果(C++/Python OpenCV源码)全部内容,希望文章能够帮你解决一行代码实现灰色铅笔画、彩色铅笔画和卡通画效果(C++/Python OpenCV源码)所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。