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

Posted

技术标签:

【中文标题】在 OpenCV 中将图像转换为彩色铅笔素描【英文标题】:convert an image into color pencil sketch in OpenCV 【发布时间】:2012-05-15 06:22:32 【问题描述】:

我想使用 OpenCV 将图像转换为彩色铅笔素描。我已经阅读了页面I want to convert an image into pencil sketch in OpenCV .我寻求的效果就像http://www.showandtell-graphics.com/photosketch.html 我通过代码使用了颜色闪避

b_d = (b_2==255? 255: min(255, b_1*255 /(255- b_2)));        
g_d = (g_2==255? 255: min(255, g_1 *255/(255- g_2)));             
r_d = (r_2 ==255? 255: min(255, r_1 *255/(255- r_2)));  

看起来效果不太好。 请帮忙。

【问题讨论】:

【参考方案1】:

整个过程在你给我们的链接中有详细说明,所以你需要3张图片来达到这个效果。

复制原始图像并将其转换为grayscale。

复制灰度图像和invert此图像。

此时,image#1为原图,image#2为灰度图,image#3为倒置图。

然后,将 color dodge 应用到图像 #3(使其变为白色)和 execute the blur。仅此一项即可为您提供灰度铅笔素描效果。

如果您希望对最终结果进行着色,则必须将blend 图像#3 与图像#1。

寻找有关混合的信息?检查this、this 和this。

【讨论】:

你的意思是:1.cvCvtColor(source_img, gray_img, CV_BGR2GRAY);2.cvNot(gray_img, imgtemp); 3.像color_dodge(dst_img, gray_img, imgtemp)一样执行闪避; 4.cvSmooth(dst_img,result_img,CV_GAUSSIAN)??????如何解决这些图像之间的通道问题?我的意思是灰色的通道是1 @karlphillip : 这是什么闪避操作,数学上(灰度图像和彩色图像) @karlphillip - 我没有使用openCV,但可以应用于常规java代码吗?我对颜色闪避感到困惑。您使用哪两个图像进行颜色减淡?是图像#2 和图像#3 吗?如果我使用那些我得到全白没有图像? @NoviceMe 颜色减淡混合模式将底层除以反转顶层](en.wikipedia.org/wiki/Blend_modes#Dodge_and_burn)。根据original link,分别是:彩色图像和倒置图像。 这变得不如在play.google.com/store/apps/…中显示。我正是想要这种类型的草图。所以请帮助我

以上是关于在 OpenCV 中将图像转换为彩色铅笔素描的主要内容,如果未能解决你的问题,请参考以下文章

❤️python入门项目将学妹的照片转换为铅笔素描 ❤️

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

在opencv中,如何将灰度图像复制并缩放为另一个彩色图像

如何在 MATLAB 中将彩色图像转换为灰度图像?

将 CVD 图像转换为彩色 OpenCV 图像

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